しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

シェル起動アーギュメント

コマンドラインからコマンド名と引数を入力、return を叩いでコマンド起動するのは UNIX に共通の機能ですが、小生のコマンド CryptOneX.bash(引数10個に拡大)を起動するとセグメンテーションフォールトが起こってコマンド起動ができません。シェルの環境を起動するときに引数の最大個数を指定するなり、コマンド起動を可能にする方策はありませんか。これでは開発が進みません。宜しくご教示のほどお願いいたします。bash を常々利用しています。

iMac, Mac OS X v10.7.2 Lion

投稿日 2017/12/25 08:57

返信
スレッドに付いたマーク ベストな回答

投稿日 2017/12/25 15:54

和行103 による書き込み:


コマンドラインからコマンド名と引数を入力、return を叩いでコマンド起動するのは UNIX に共通の機能ですが、小生のコマンド CryptOneX.bash(引数10個に拡大)を起動するとセグメンテーションフォールトが起こってコマンド起動ができません。シェルの環境を起動するときに引数の最大個数を指定するなり、コマンド起動を可能にする方策はありませんか。これでは開発が進みません。宜しくご教示のほどお願いいたします。bash を常々利用しています。

コマンド入力において引数に個数制限はありません。

ただコマンドライン全体での最大文字数制限があるだけです。

この文字数制限は"*"や"?"といったワイルドカードを展開した結果に対して適用されます。

ちなみにOS Xでは、この最大文字数はコマンド「sysctl kern.argmax」で確認できます。

実効例:

$ sysctl kern.argmax

kern.argmax: 262144


なお、シェルスクリプト中で数字で直接参照できる引数は$1〜$9の9個のみです。($10は$1+"0"に置き換えられる)

それ以降を参照したい場合は「shift」コマンドを併用するか、$BASH_ARGV[10]のように配列としてアクセスする必要があります。

# 後者はbash独自の拡張機能で他のシェル(Born Shell等)にはありません。

返信: 1
スレッドに付いたマーク ベストな回答

2017/12/25 15:54 和行103 への返信

和行103 による書き込み:


コマンドラインからコマンド名と引数を入力、return を叩いでコマンド起動するのは UNIX に共通の機能ですが、小生のコマンド CryptOneX.bash(引数10個に拡大)を起動するとセグメンテーションフォールトが起こってコマンド起動ができません。シェルの環境を起動するときに引数の最大個数を指定するなり、コマンド起動を可能にする方策はありませんか。これでは開発が進みません。宜しくご教示のほどお願いいたします。bash を常々利用しています。

コマンド入力において引数に個数制限はありません。

ただコマンドライン全体での最大文字数制限があるだけです。

この文字数制限は"*"や"?"といったワイルドカードを展開した結果に対して適用されます。

ちなみにOS Xでは、この最大文字数はコマンド「sysctl kern.argmax」で確認できます。

実効例:

$ sysctl kern.argmax

kern.argmax: 262144


なお、シェルスクリプト中で数字で直接参照できる引数は$1〜$9の9個のみです。($10は$1+"0"に置き換えられる)

それ以降を参照したい場合は「shift」コマンドを併用するか、$BASH_ARGV[10]のように配列としてアクセスする必要があります。

# 後者はbash独自の拡張機能で他のシェル(Born Shell等)にはありません。

シェル起動アーギュメント

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。