if [ $# -ne 1 ]
then
echo Usage: $0 DIRECTORY
exit 1
elif [ ! -d $1 ]
then
echo $1 is not a directory
exit 2
fi
directory=$1
cd $directory
files=*
echo $directory
echo $files
exit 0
今までそれを破ろうとしていました。
$#
残りのパラメータの数。[
テストコマンドです-ne
数値「等しくない」演算子です。if [ $# -ne 1 ]
引数が1つしかないかテストする場合も同様です(左)。
2番目の例では:
!
いいえの意味-d
出力ディレクトリを示します。$1
最初の残りのパラメータです。
ベストアンサー1
提供されたスクリプトをコピーしshellcheck.com
、見つかった問題を解決した後:
- 行方不明の女の子
- 足りない引用文が多い
- CDが失敗した場合、スクリプトも失敗することを確認してください。
- 割り当ては、変数に1つの文字しか含まれていないという意味
files=*
と同じです。完全なファイルのリストを 。files="*"
*
files
スクリプトは次のとおりです。
#!/bin/sh -
if [ "$#" -ne 1 ] # check that there is one argument given.
then
echo "Usage: $0 DIRECTORY" # inform the user how to use the script.
exit 1
elif [ ! -d "$1" ] # check that the argument is a directory.
then
echo "$1 is not a directory" # inform the user if on error.
exit 2
fi
directory=$1
cd "$directory" || exit 3 # change to that directory
set -- * # get a list of files inside
files="$*"
echo "$directory" # Print the name
echo "$files" # Print the file list.
exit 0
まだ高いレベルの問題がありますが、スクリプトはコメントに記載されています。
フルスクリプトはディレクトリ内のファイルを一覧表示します。