それ以外の場合は実行されません。

それ以外の場合は実行されません。

私のスクリプトはデータをより読みやすい形式に変換します。ところで質問があります。パラメータを入力せずにスクリプトのみを入力した場合は、私が実行した「ファイル名を入力してください」を返したいと思います。ただし、何らかの理由でテストすると表示されません。パラメータが0より大きい場合は実行し、それ以外の場合はメッセージをエコーするようにシステムに指示します。

*コードの交換に関するアドバイスを求めるものではありません。特別な事由により変更はできませんので、本作品へのご提案はお控えください。

for myvar
do

        if [ $# -gt 0 ]
        then

                        if [ -e "$myvar" ]
                        then :
                        else
                                echo "$myvar cannot be found."
                        exit
                        fi

                echo "This is the filname:" $myvar 

                cut -f1 -d, $myvar > social_security
                cut -f2 -d, $myvar > last_name
                cut -f3 -d, $myvar > first_name
                sed 's/^ *//' last_name > last_name_draft
                sed 's/^ *//' first_name > first_name_final
                sed 's/-//' social_security > social_security_draft
                sed 's/-//' social_security_draft > social_security_final
                sed 's/$/:/' last_name_draft > last_name_final
                paste -d\  first_name_final last_name_final social_security_final  > final_draft
                sed '1d' final_draft > final
                cat final

                echo -en '\n'   

        else
                echo "Please enter a filename."
        fi
done

答え1

スクリプトの最初の行を考えてみましょうfor myvarforこのループはパラメータなしで何回実行されますか?

答え2

はい、続行する前に引数があることを確認する必要があります。

if [ $# -gt 0 ]
then
    for myvar
    do
        if ! [ -e "$myvar" ]
            echo "$myvar cannot be found."
            exit
        fi

        echo "This is the filname:" $myvar 

        cut -f1 -d, $myvar > social_security
        cut -f2 -d, $myvar > last_name
        cut -f3 -d, $myvar > first_name
        sed 's/^ *//' last_name > last_name_draft
        sed 's/^ *//' first_name > first_name_final
        sed 's/-//' social_security > social_security_draft
        sed 's/-//' social_security_draft > social_security_final
        sed 's/$/:/' last_name_draft > last_name_final
        paste -d\  first_name_final last_name_final social_security_final  > final_draft
        sed '1d' final_draft > final
        cat final

        echo -en '\n'   
    done
else 
    echo "Please enter a filename."
fi

関連情報