이것을 참조하세요https://stackoverflow.com/a/31356602, 다음과 같은 코드를 작성했습니다.
#!/bin/bash
# Define the two strings to compare
string1="First string with some random text."
string2="Second string with some random text and some changes."
# Create a temporary directory
temp_dir=$(mktemp -d)
# Create temporary files for the strings
file1="$temp_dir/string1.txt"
file2="$temp_dir/string2.txt"
echo -e "$string1" > "$file1"
echo -e "$string2" > "$file2"
# Use the git diff command to compare the temporary files
git diff --no-index --word-diff=color --word-diff-regex=. "$file1" "$file2"
# Delete the temporary directory
rm -rf "$temp_dir"
반품:
이제 나는 그것을 한 줄로 압축하려고합니다.
#!/bin/bash
# Define the two strings to compare
string1="First string with some random text."
string2="Second string with some random text and some changes."
# Use the git diff command to compare the strings
git diff --no-index --word-diff=color --word-diff-regex=. <('%s\n' "$string1") <(printf '%s\n' "$string2")
하지만 나는 다음을 얻습니다.
임시 파일을 명시적으로 생성하지 않고 어떻게 git diff
문자열을 파일로 전달할 수 있나요?
노트.내 목표는 두 개의 (짧은) 문자열을 (문자 수준) "시각적으로" 비교하여 다음과 유사한 출력을 얻는 것입니다.
비교된 두 문자열 간의 차이점이 단일 문자열에서 강조 표시됩니다. 출력은 git diff
이상적이지만 다른 솔루션도 열려 있습니다.
답변1
파이프 기반 리디렉션(예: bash의 <()
.
그러나 zsh-isms를 사용하면 작동합니다. 임시 파일 확장자가 있습니다 =()
.
#!/usr/bin/zsh
# use zsh instead of bash
# Define the two strings to compare
string1="First string with some random text."
string2="Second string with some random text and some changes."
# Use the git diff command to compare the strings
git diff \
--no-index \
--word-diff=color --word-diff-regex=. \
=(printf '%s\n' "$string1") \
=(printf '%s\n' "$string2")