2017-09-19 2 views
-1

私はbashで自分のコードを実行するときに1行のテキストだけを表示しようとしています。私は、次のどのようにbashに1行のテキストを表示しますか

./myscript.sh /etc 

を実行するようにした場合、たとえば、それは私のスクリプトEX内のすべての行を表示していましたので、 :

/etc is a directory 
etc/hosts is a file 
/dev/tty0 is a character device 
/dev/sda is a block device 
/MyNonExistantDirectory is not a file, directory, character device or block device on your system. 

私はそれを表示すること

/etc is a directory 

ですコマンド./myscript.sh /etcを使用した後。

#!/bin/bash 
device0="/etc" 
if [ -d "$device0" ] 
then 
echo "$device0 is a directory." 
fi 

device1="/etc/hosts" 
if [ -f "$device1" ] 
then 
echo "$device1 is a file." 
fi 

device2="/dev/tty0" 
if [ -c "$device2" ] 
then 
echo "$device2 is a character device." 
fi 

device3="/dev/sda" 
if [ -b "$device3" ] 
then 
echo "$device3 is a block device." 
fi 

device4="/MyNonExistantDirectory" 
if [ -f "$device4" ] 
then 
echo "$device4 is not a file, directory, character device or block device on your system." 
fi 
+0

スクリプトの引数は '$ 1'です。それを使用してください。 – Barmar

+1

スクリプト内でパラメータを使用していません。あなたはすべてをハードにコーディングしています。すべてがハードコーディングされている場合、IF条件が真に戻らないとあなたはどのように期待していますか? –

答えて

1

引数を得るには$1を使用してください。また、相互に排他的な条件をテストするのにif/elif/elseを使用してください。

#!/bin/bash 
device=$1 
if [ -d "$device" ] 
then 
    echo "$device is a directory." 
elif [ -f "$device" ] 
then 
    echo "$device is a file." 
elif [ -c "$device" ] 
then 
    echo "$device is a character device." 
elif [ -b "$device" ] 
then 
    echo "$device is a block device." 
else 
    echo "$device is not a file, directory, character device or block device on your system." 
fi 
1

あなたはそれをかなり釘付けにしました。最初の位置引数($ 1)から1つの "device"を作成し、パスごとのif文をelif節付きの単一のif文に変換するだけです。

#!/bin/bash 
device=$1 

if [ -d "$device" ]; then 
    echo "$device is a directory." 

elif [ -f $device ]; then 
    echo "$device1 is a file." 

elif [ -c $device ]; then 
    echo "$device2 is a character device." 

elif [ -b $device ]; then 
    echo "$device3 is a block device." 

else 
    echo "$device is not a file, directory, character device or block device on your system." 

fi 
0

linuxコマンドの先頭にファイルの先頭行が表示されます。したがって、

head -1 

私はあなたが探している出力を生成すると思います。

+0

OPは* 1行の出力を必要としますが、必ずしも現在の出力の*最初の行である必要はありません。 – chepner

+0

私が述べた望ましい出力は最初の行です。申し訳ありません、私はちょうど密集していると思います。 – rreck

関連する問題