`if` `else` 문의 'echo' 명령은 아무것도 표시하지 않습니다.

`if` `else` 문의 'echo' 명령은 아무것도 표시하지 않습니다.

내 코드에서는 모든 것이 잘 작동합니다. 명령문 echo=$folder의 명령 만 제외하면 if else아무 작업도 수행되지 않습니다!

이 문제를 어떻게 해결할 수 있나요?

#!/bin/bash
echo "Enter the path to the folder. If already in folder type 1."
read input
echo
echo
if [ $input == 1 ];then 
folder=$PWD;echo="$folder"
else
folder=$input;echo="$input"
fi
cd $folder
ls
echo
echo
echo "File Name"
read file
sudo chmod +x $file
echo
echo
echo Done
exit

답변1

echo="$folder"사용. . . 교체echo "$folder"

다음에도 적용됩니다.echo="$input"

여기서 echo는 변수 역할을 합니다. 명령 자체를 실행하는 =대신 값을 할당하려고 합니다 . 당신이 그것을 쫓아간다면 echo, 당신은 그만한 가치가 있을 것입니다.echo="$folder"echo $echopwd

결과를 재현하십시오.

/home/test$ folder="$PWD"
/home/test$ echo="$folder"
/home/test$ echo "$echo"
/home/test

답변2

Utsav는 귀하에게 적합한 솔루션을 제공합니다. 문제는 이라는 변수에 할당한다는 것입니다 echo.

그러나 스크립트를 개선하기 위한 몇 가지 추가 제안을 제공하겠습니다.

현재는 이름이 지정된 폴더를 선택할 수 없습니다 1. 게다가 스크립트는 불필요한 상호작용이므로 사용자와의 상호작용이 전혀 필요하지 않습니다. 예를 들어, 사용자가 스크립트를 호출할 때 명령줄에 폴더 이름을 제공하면 폴더 이름을 전혀 묻지 않아도 됩니다. 사용자가 그렇게 하는 경우에만아니요현재 작업 디렉터리를 사용하는 데 필요한 폴더 이름을 제공합니다.

#!/bin/sh

folder="$1"

if [ -z "$folder" ]; then
    printf 'No folder given, using "%s"\n' "$PWD" >&2
    folder="$PWD"
fi

그렇다면 사용자가 해당 폴더에 있는 파일 이름을 입력하도록 강요하는 이유는 무엇입니까? 메뉴에서 파일을 선택하도록 요청할 수 있습니다.

select file in "$folder"/*; do
    printf 'Making "%s" executable with "sudo chmod +x"\n' "$file"
    sudo chmod +x "$folder/$file"
    break
done

명령줄에 유효한 파일이 제공되면 전체 스크립트는 메뉴를 건너뜁니다.

#!/bin/sh

folder="$1"

if [ -z "$folder" ]; then
    printf 'No folder given, using "%s"\n' "$PWD" >&2
    folder="$PWD"
elif [ -f "$folder" ]; then
    # $folder is actually a file, chmod it and we're done
    sudo chmod +x "$folder"
    exit
fi

if [ ! -d "$folder" ]; then
    printf 'No such folder: %s\n' "$folder" 2>&1
    exit 1
fi

select file in "$folder"/*; do
    printf 'Making "%s" executable with "sudo chmod +x"\n' "$file"
    sudo chmod +x "$folder/$file"
    break
done

이 스크립트를 호출하면 다음 script.sh을 통해 실행할 수 있습니다.

$ ./script.sh                  # asks for file in current folder
$ ./script.sh myfolder         # asks for file in "myfolder"
$ ./script.sh myfolder/myfile  # quietly chmods "myfolder/myfile"

관련 정보