0

現在、Linux のクラスを受講しています。私はほとんど自分で何かを学ばなければなりません。引数に基づいて日付形式を生成するために、このスクリプトを作成しました。つまり (./script.sh one)。このスクリプトでそれを行うのに問題があります。私は何か間違っていると思います。どんな助けでも大歓迎です。ここにスクリプトがあります:

#!/bin/bash


if [ $1="one" ]
    then
        date +%m-%d-%y 

elif [ $2="two" ]
    then
        date +%d-%m-%y

elif [ $3="three" ]
    then
        date +%A,%B-%d,%Y 

elif [ $4="four" ]
    then
        date +%s 
elif [ $5="five" ]
    then

fi
4

1 に答える 1

3

シェル スクリプトは、直感に反して空白に敏感です。等号の前後にはスペースが必要です。ifまた、完全に空のステートメントを持つこともできません。そこには少なくとも 1 つのステートメントが含まれている必要があります。何も持っていない場合、書き込み:は null ステートメントの一般的なイディオムです。

if [ $1 = "one" ]; then
    date +%m-%d-%y 
elif [ $2 = "two" ]; then
    date +%d-%m-%y
elif [ $3 = "three" ]; then
    date +%A,%B-%d,%Y 
elif [ $4 = "four" ]; then
    date +%s 
elif [ $5 = "five" ]; then
    :
fi

また、最初の引数が何であるかを確認するので$1はなく、すべてのチェックで使用したいと思うかもしれません。それが本当なら、 を に交換できます。$1$5ifcase

case $1 in
    one)   date +%m-%d-%y;;
    two)   date +%d-%m-%y;;
    three) date +%A,%B-%d,%Y;;
    four)  date +%s;;
    five)  ;;
esac
于 2013-07-03T18:56:57.410 に答える