タグ付けされた質問 「quoting」

文字列は通常、引用符で区切られているため、引用符を含む文字列を処理する際に問題が発生します。


1
bashrcの遅延置換
〜/ .bashrcが実行されるとき(ターミナルを開くとき)ではなく、実行時に置換~/.bashrcを評価$()するエイリアスをどのように取得しますか? このコマンドを頻繁に実行して、エイリアスを追加します。 svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff ただし、~/.bashrcエイリアスとして追加すると、ターミナルを開いたときの評価にハードコードされていることがわかります。 $ alias alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff' 端末を開いた場合、~エラーが発生します。 svn: E155007: '/home/dotancohen' is not a working copy svn: E155007: '/home/dotancohen' is …
10 bash  shell  quoting  alias  bashrc 

1
IFSのデフォルト値を理解する
私のGNU bashバージョン4.2.8では、IFSにはデフォルトでスペース、タブ、およびラインフィードのデフォルト値があります。 usr@T42 ~ $ echo -n "$IFS" | hexdump -C 00000000 20 09 0a | ..| 00000003 usr@T42 ~ $ そのようなデフォルトのIFSには理由がありますか?さらに、bashビルトインの他にどのユーティリティがIFSを使用しreadますか?
10 bash  shell  quoting 

2
引数をそのままの状態で機能させる
次の機能があります。 bar() { echo $1:$2; } この関数を別の関数から呼び出していますfoo。fooそれ自体は次のように呼び出されます。 foo "This is" a test 次の出力を取得します。 This is:a つまり、bar受け取る引数は、に渡すトークンと同じでなければなりませんfoo。 fooこれを達成するためにどのように実装する必要がありますか?次の2つの実装を試しましたが、どちらも機能しません。 foo() { bar $*; } –出力: this:is foo() { bar "$*"; } –出力: this is a test: 私の質問は、議論の引用をどのように保存できるかということです。これはまったく可能ですか?

1
別のコマンドの単一引用符と二重引用符を含むコマンドをラップする
最近watchについて学びましたが、比較的高度なコマンドで動作させるのに苦労しています。 たとえば、3秒ごとにwatch次のコマンドを実行するように依頼します*:zsh for x in `command_1 | grep keyword | cut -d' ' -f1`; do command_2 "word[word=number]" $x; done 上記の行を見るとわかるように、他の特殊文字の中に、単一引用符、二重引用符が含まれています。 だから私は試しました: watch -n 3 "for x in `my_command | grep keyword | cut -d' ' -f1`; do command2 "rusage[mem=7000]" $x; done" しかし、私は得ました: !@#$#....;でxに一致するものが見つかりませんでした。終わった 他の組み合わせを試したが成功しなかった。これらの試みの1つを次に示します。 watch -n 3 "for x in …
10 shell  zsh  quoting 



4
シェルプロンプトで引数を出力し、シェルプロンプトでそれらを書き込むように引用できますか?
シェルスクリプトでは、"$@"必要に応じて引用することで、スクリプトの引数に展開されます。たとえば、これはスクリプトの引数をgccに転送します。 gcc -fPIC "$@" <<<ただし、bashのpass-to-stdin構文を使用する"@$"と、期待どおりに機能しません。 #!/bin/bash cat <<< "$@" ./test.sh foo "bar baz"与えられたスクリプトを呼び出す foo bar baz 私は期待します foo "bar baz" シェルプロンプトでそれらを書くように、その引数を出力するシェルスクリプトを書く方法はありますか?たとえば、ヒントにスクリプト引数を含め、次に使用するコマンドに関するヒント。

2
bashで単一引用符で囲まれた$ 'string'と二重引用符で囲まれた$“ string”の違いは何ですか?
私はecho次の2つのコマンドを使用して新しい行を実行しようとしました: 最初のコマンド: echo $'Hello World\nThis is a new line' 応答: Hello World This is a new line 2番目のコマンド: echo $"Hello World\nThis is a new line" 応答: Hello World\nThis is a new line 私の質問はで包まれた文字列の違い何さ$' 'で包まれた文字列の対$" "中bashさんはecho?
9 bash  quoting  echo 


1
`\ time`、` t \ ime`、 `\ cd`は実際には何をしますか?(シェルのバックスラッシュで楽しい)
/usr/bin/timeと組み込みシェル(bashとzsh)の違いについて議論している間time、誰かが\timeを取得するための省略形として使用できると述べました/usr/bin/time。 最初は無害なショートカットのように見えましたが、次にいくつかの質問が浮上しました。 なぜうまくいくのt\imeか? ¹ は\cd変更/usr/bin/cdしないのに、なぜディレクトリを変更するのですか? したがって、明らかに、\fooと同等ではありません$(which foo)。質問は今です: \foobashとzshの両方で観察された動作は、シェルのPOSIX定義によって何らかの方法でカバーされていますか?そうである場合、それが動作するのはなぜですか? 脚注1:/usr/bin/cd私のシステムでは、 #!/bin/sh builtin cd "$@"

3
bash変数の改行
私はbash変数に複数の行を格納しようとしていますが、動作しないようです。 たとえば、/bin1行に1つのファイルをリストしてに保存すると$LS、$LSstdinとしてに渡されwc、常に1が返されます。 $ ls -1 /bin | wc -l 134 $ LS=$(ls -1 /bin); wc -l <<< $LS 1 画面に出力しようとすると、さまざまな結果が得られます。echoすべての行を1行にprintf出力し、最初の行のみを出力します。 #!/bin/bash LS=$(ls -1 /bin) echo $LS printf $LS では、bash変数には複数の行を含めることができますか?
9 bash  shell  quoting 

2
条件付きで「時間」を通じてサブシェルを渡すにはどうすればよいですか?
Vagrantボックスのセットアップスクリプトがあります。これは、でシングルステップを測定するために使用していましたtime。次に、時間測定を条件付きで有効または無効にしたいと思います。 たとえば、以前の行は次のようになります。 time (apt-get update > /tmp/last.log 2>&1) 今、私は単にこのようなことをすることができると思いました: MEASURE_TIME=true [[ $MEASURE_TIME = true ]] && TIME="time --format=%e" || TIME="" $TIME (apt-get update > /tmp/last.log 2>&1) しかし、これはうまくいきません: syntax error near unexpected token `apt-get' `$TIME (apt-get update > /tmp/last.log 2>&1)' ここの問題は何ですか?
9 bash  shell  quoting  time 


2
アンパサンドを含むサブディレクトリ名をエスケープするにはどうすればよいですか?
Kornshellを実行し、ディレクトリツリーをトラバースしようとしています。次のような名前のサブディレクトリにcdしたいとします。 -3ab_&_-3dc.img 私の質問は、この名前のアンパサンドをどのようにエスケープする必要があるのですか?二重引用符とバックスラッシュのさまざまな組み合わせを試しましたが、成功しませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.