- ベストアンサー
${@+"${@}"}とは?
- シェルスクリプトで使われる${@+"${@}"}という表記について、その意味と使い方について解説します。
- また、「${PROGRAM_DIR?}」という記述についても説明します。
- この要約では、${@+"${@}"}と${PROGRAM_DIR?}という表記の意味について詳しく解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 正規表現とワイルドカードについて
UNIX初心者の者です。現在Solarisを使い毎日悪戦苦闘しています。 質問なのですが、「正規表現」と「ワイルドカード」とはどのように違うものなのでしょうか。ちょっと混乱しています。 現状の認識では、 「ワイルドカード」-コマンドラインで使うもの。エスケープするときは「’’」で囲む。複雑な指定は難しい。 「正規表現」-コマンドの引数や、スクリプトなどで使われるもの。エスケープするときは「¥」をつける。基本的に「’’」で囲むもの。様々な表現が可能。 といった感じにとらえています。が、いざ使うとなると混乱している状態です。 すみませんが、この2つについて教えてもらえないでしょうか。 あと参考になるような本やホームページなどもあるでしょうか?コマンドの組み合わせやシェルスクリプトの記述なども勉強中なので、その関係の事でもよいので。 よろしくお願いします。
- ベストアンサー
- その他(OS)
- シェルスクリプトの引数について
test.sh '*.c' といったコマンドを入力した時に、 シェルスクリプト内で引数$1を受け取ったときに$1='*.c'となるのではなく、 カレントディレクトリ内にある'*.c'の正規表現にマッチするファイルが入ってしまっています。 例)カレントディレクト内にaaa.cファイルbbb.cファイルといったファイルがある時は、 $1=aaa.c bbb.cとなっています。 '*.c'の正規表現自体をシェルスクリプト内で受け取る方法はないのでしょうか? シェルはbashを使用しています。
- ベストアンサー
- その他(プログラミング・開発)
- シェルススクリプト内のパス指定について
プログラムを実行するシェルスクリプト内に以下のように絶対パスで環境変数の設定用のシェルスクリプトが絶対パスで書かれているのですが、この場合だと環境が変わるたびにシェルスクリプト内のパスを書き換えなければなりません。 /dir1/dir2/dir3/setenv.sh 相対パスにすれば書き換える必要はなくなるのですが、お作法上は相対パスで書くことは問題ない(良いと)されているのでしょうか? ../../dir/setenv.sh
- ベストアンサー
- Linux系OS
- UNIXプログラミング execについて。
execveで、引数に環境変数がありますが、これはいったいどういうときに使うのですか?いまいち分かりません。 簡単なシェルスクリプトを作成しているのですが、今は環境変数の意味がよくわからないので、execvpなどを使っています。 path検索をするかしないかの使い分けはわかります。 ですがたとえば、 execv と execve execl とexecle はどう違うのでしょうか。
- ベストアンサー
- C・C++・C#
- bashで変数にパイプを入れ、コマンドとして使う?
パイプを含む文字列が入った変数をシェルコマンドとして実行する方法がありましたら 教えてください。 Linux環境で、bashを使って定期的にモニタリングするスクリプトを書こうとしています。 スクリプトの引数で実行するモニタリングコマンドを変えれるようにしたいのですが、 パイプが入っているとうまくいきません。 下記のようなスクリプトで、引数に "ps -ef | grep pty" と入れたら、定期的に そのようなコマンドを実行できるようにできますでしょうか? (引数指定時に、きちんとクォーテーションで全体を囲んで、パイプが評価されない ようにしてもダメでした。) 変数として入ったコマンドを実行するときに、パイプがシングルクォーテーションで 囲まれて "ps -ef '|' grep pty" のようになってしまい、パイプとして実行時に認識 されないようです。 bashシェルで設けてる制約でしょうか?回避策などありますでしょうか? <<スクリプト poll.sh>> ## # Defs export RUNCMD='finger' export INTERVAL=10 ## # Getopt while getopts "t:" OPT; do case ${OPT} in t) INTERVAL=${OPTARG};; esac done shift $((OPTIND-1)) [ ${#} -gt 0 ] && RUNCMD="${*}" ## # Main part while :; do (set -x; ${RUNCMD}; sleep ${INTERVAL}); done
- ベストアンサー
- Linux系OS
- 【ど素人】シェルスクリプトで、引数の形式チェック【ヘルプミー】
bashで書いたシェルスクリプトで、 引数を正規表現を用いて入力形式チェックしたいと思っています。 いい方法が思いつかず、とりあえず動作はする以下のスクリプトを 組みました。 echo $1 | grep "正規表現" > /dev/null if [ $? -eq 0 ]; then # あってるときの処理 else # ちがうときの処理 fi どうも、他に良い方法がある気がしてなりませんが、 どうでしょうか? 良い方法があれば教えてください。 また、(ないとは思うけど)この方法が一般的ということであれば、 その旨教えていただけるとありがたいです。 よろしくお願いします。
- 締切済み
- Linux系OS
- 正規表現を展開させないで子シェルに渡す
シェルで、 正規表現が入ってる変数を子シェルに渡したいのですが、展開されてしまいます。 展開しないで渡すには、どうしたら良いのでしょうか? 変数には、 123*.txt や aaa[0-9].txt などが入っています。 宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプトでの演算
シェルスクリプトで、多項式の演算の記述の仕方を教えてください。 (a+2)+(a*3)-4 のような式はどう記述すればいいのでしょうか。 初歩的な事がわかっていなくてすみません。 よろしくお願いします。 ちなみに.shです。
- 締切済み
- その他(プログラミング・開発)
- Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれ
Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれば良いのでしょうか? $ alias a="ls $1 -a" $ a dir . .. ls_nara_ok $ alias a="find $1 -type d" $ a dir find: pathes must precede expression: a lsではうまく行くのに、findではエラーとなってしまいます。 どうすればスクリプト(エイリアス)内のfindに引数を渡せるのでしょうか?
- ベストアンサー
- Linux系OS
- シェルスクリプトの切り替え?
シェルには種類がありユーザーはそれを切り替えることによって好みのシェルを自由に選択することが出来る。 というのはわかりました。 が、シェルスクリプトを記述して実行する場合はどうなんでしょう。 bornシェルで記述したシェルスクリプトをcshから実行できるのでしょうか。 実行者とスクリプト記述者が同じシェル環境で操作しないといけないのかと思い質問しています。 ひょっとして意味のわからない質問かも知れませんがお願いします。
- ベストアンサー
- Linux系OS
お礼
ありがとうございます。とても分かりやすい回答でした。 空と空文字の件も試してみました。"$@"はどちらも""ですが、./fooとした場合は引数が0個でした。空文字列は引数があるけど内容は""、空は引数自体ないということですね。