Unixスクリプトに配列が格納できる要素の数は何ですか?

Unixスクリプトに配列が格納できる要素の数は何ですか?

ディレクトリのファイル権限とそのサブディレクトリの内容を確認する必要が/usrあります/tmp。各ファイルと別々に、アレイ内/varのディレクトリとそのサブディレクトリファイルに対するファイル権限を取得しました/usr/tmp/var

fun() {
  set -A  PR_Uperm -- "/usr" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`
  set -A  PR_Tperm -- "/tmp" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`
  fun2
}

最後に、スクリプトにダイナミックレンジがあるので、これらの個々の配列が異なる関数の単一の配列にあることを望みます。私は以下を試しました:

fun2(){
  set -A perm ${PR_Uperm[@]} ${PR_Tperm[@]}
}

スクリプトを実行すると、このエラーが発生します。

script.sh:79919: 下付き文字が範囲外です。

配列のみを与えるときパーマ配列は次のようになり、エラーは発生しません。

set -A perm ${PR_Tperm[@]}

保存するアイテムがたくさんあります。パーマ大量に。配列のサイズを動的に増やす方法は?グループABashとは関係ありませんが、これらの動的増加はおそらくbashとkshでも同じです。

次のように一時ファイルに保存してみました。

printf "/usr\n`ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`\n" >> /tmp/output2.txt  # not working in ksh, but working when I run as bash
ksh: no space

ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}' >> /tmp/output2.txt # it is working

最初のコマンドがbashでは正常に実行されますが、kshでは実行されないのはなぜですか?

ベストアンサー1

私が正確に覚えているならば、Bashには配列サイズにデフォルトの制限はありません。 KornShell93は、最新バージョンで最大約64k(以前のバージョンでは最大4095)のインデックスをサポートしています。

mtreeファイル階層を仕様と比較するユーティリティがあります。仕様との違い(ファイルやディレクトリの欠落、所有権/権限の違い)を報告し、オプションで修正します(可能な場合)。

私はあなたがどのUnixを使用しているのかわからないので、このユーティリティを見つけることができる場所に関する追加の指示を提供することはできません。内部にOpenBSD基本システムしかし、明らかにまたLinuxで利用可能

おすすめ記事