タグ付けされた質問 「bourne-shell」

4
Unix Bourne Shellの配列
Bourneシェル(/bin/sh)で配列を使用しようとしています。配列要素を初期化する方法は次のとおりです。 arr=(1 2 3) しかし、エラーが発生しています: syntax error at line 8: `arr=' unexpected 今、私がこの構文を見つけた投稿はそれがのためbashであると言いますが、私はBourneシェルのための別の構文を見つけることができませんでした。構文も同じ/bin/shですか?

3
シェルメタキャラクターとしての^の使用
今日私は含まれている小さなスクリプトを書きました grep -q ^local0 /etc/syslog.conf レビュー中、同僚は、Bourneシェルの「パイプ」を意味する^local0ため、引用することを提案し^ました。この主張に驚いて、私はこれに言及した参考文献を追跡しようとしました。インターネット上でこれが問題だと示唆するものはありませんでした。 ただし、bshAIX 7の(Bourneシェルであると主張する)の実装には、実際に次の動作があることがわかります。 > bsh $ ls ^ wc 23 23 183 $ ls | wc 23 23 183 私が試した他の「Bourneシェル」実装は、この方法で動作し^ませんでした(つまり、シェルメタキャラクターとはみなされません)。shCentOS(実際にはbash)とshFreeBSD(bashではない)で試しました。他に試すシステムはあまりありません。 この動作は予想されますか?どのシェル^がパイプメタキャラクターと見なされますか?

4
ソースコード内のread -pのプロンプトで長い文字列を複数の行に分割する方法は?
として実行されるインストールスクリプトを作成しています/bin/sh。 ファイルの入力を求める行があります: read -p "goat can try change directory if cd fails to do so. Would you like to add this feature? [Y|n] " REPLY この長い行を多くの行に分割して、80文字を超えないようにします。スクリプトのソースコード内の行について話しています。スクリプトの実行時に画面に実際に印刷される行についてではありません! 私が試したもの: フリストアプローチ: read -p "goat can try change directory if cd fails to do so. " \ "Would you like to add this feature? …


1
IFS nullはunset IFSと同じではありませんか?
ここで、IFSと呼ばれる素晴らしい質問を読みました。回答とコメントがIFS =がIFSの設定を解除することと同じではないことを述べているPOSIXを引用しているので、私は驚きました。IFSの設定を解除すると、明らかにデフォルト値が使用されます。代わりにIFSをnullにすると、スプリッターはありません。私はそれについて別の見方をしたことを知っていて、これを私のブックマークで見つけました: ボーンシェルプログラミング $ IFS スクリプトの最初のステートメントは IFS = これにより、入力フィールドのセパレーターがデフォルト値にリセットされます。それ以外の場合は、ユーザーから$ IFSを継承します。ユーザーは、$ IFSを奇妙な値に設定して、shが期待どおりに文字列を解析しないようにし、奇妙な動作を引き起こす可能性があります。 それでそれは少し前に本当でしたか、それとも著者は間違っていますか?

3
「$ {PS1-}」は有効な構文であり、プレーンな「$ PS1」とどのように違いますか?
私が持っているスクリプトを見ています: if [ "${PS1-}" ]; then -PosixやBashの標準構文には見えないので、この最後のバグは少し気になります。それは永遠に存在していたこの難解な構文ですか、それともタイプミスですか?標準/ドキュメントへの参照をいただければ幸いです。 通常、私はそれをコーディングします: if [ "$PS1" ]; then どちらが正しいのですか、それとも違いがありますか?

2
POSIXシェルスクリプトで算術ループを作成するにはどうすればよいですか?
で算術forループを作成する方法を知っていますbash。 POSIXシェルスクリプトで同等のループを実行するにはどうすればよいですか? 同じ目標を達成するにはさまざまな方法があるため、自由に独自の答えを追加し、それがどのように機能するかを少し詳しく説明してください。 このようなbashループの例を次に示します。 #!/bin/bash for (( i=1; i != 10; i++ )) do echo "$i" done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.