複数のログファイルを数えていますが、範囲は1から始まりますが、0から始まります。
path=(/home/folder/text/*)
for 1 int ${!path}; do
printf "$s: $s\n" $i "${list[i]##*/}";
done
答え1
for
シェルコードは、インデックスを取得するためにループと置換で無効な構文を使用し、printf
型文字列も正しく使用しないため意味がありません。
私はあなたが次のようなことをしたいと思います:
i=0
for pathname in /home/folder/text/*; do
i=$(( i + 1 ))
printf '%s: %s\n' "$i" "$( basename "$pathname" )"
done
/home/folder/text
(非表示の名前を除く)の下にある名前が一覧表示されます。
ご希望の場合は"$( basename "$pathname" )"
上記の内容を 。"${pathname##*/}"
自分のコードに示されている配列を使用してください。
pathnames=( /home/folder/text/* )
i=0
for pathname in "${pathnames[@]}"; do
i=$(( i + 1 ))
printf '%s: %s\n' "$i" "$( basename "$pathname" )"
done
配列のインデックスを繰り返しますか?
pathnames=( /home/folder/text/* )
for index in "${!pathnames[@]}"; do
printf '%s: %s\n' "$index" "$( basename "${pathnames[$index]}" )"
done
配列はbash
インデックス0から始まります。各インデックスに1を追加します。
pathnames=( /home/folder/text/* )
for index in "${!pathnames[@]}"; do
printf '%s: %s\n' "$(( index + 1 ))" "$( basename "${pathnames[$index]}" )"
done