このスクリプトが何をしているのかを理解するのに役立ちます。

このスクリプトが何をしているのかを理解するのに役立ちます。
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

まだ高いレベルの問題がありますが、スクリプトはコメントに記載されています。

フルスクリプトはディレクトリ内のファイルを一覧表示します。

おすすめ記事