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

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

3
SSH経由のリモートforループ
スクリプトに次のものがあります for server in ${servers[@]}; do echo ${server} ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done" done しかし、それは機能しません。奇妙なことに、$ Iの改行が表示されます。したがって、10個のファイルがある場合、10行の空白行が表示されます。
11 bash  ssh  quoting 

2
sedの正規表現文字をエスケープして、正規表現文字として解釈する必要があるのはなぜですか?
例えばそうです cat sed_data.txt | sed 's/\b[0-9]\{3\}\b/NUMBER/g' 、私がすることをしなければならない正規表現を形成するために、文字をエスケープします。この場合、何度も解釈されるために中括弧をエスケープする必要がありました。 どうして?エスケープされない限り、すべてが正規表現文字になると期待していました。すなわち反対です。

4
`mv`で改行をファイル名に追加
それは深刻な問題です。私はいくつかのawkスクリプトをテストし、それらの名前に改行を含むファイルが必要です。 で改行をファイル名に追加することは可能mvですか? 私は今、これを行うことができますtouch: touch "foo bar" タッチで、コピーと貼り付けごとに改行文字を追加しました。しかし、私はfooReturnbar自分のシェルで書くことができません。 ファイル名に改行を含めるために、ファイルの名前を変更するにはどうすればよいですか? 2015/06/28を編集; 07:08 pm zsh使用できる改行を追加するには、Alt+Return

3
名前に引用符 'が付いたファイルの名前を変更しています
少し問題が発生しました。あるクライアントから、本当に古いサーバーからのサイトの移行を依頼されました。彼らがどうやってそこに着いたのか分からないが'、彼らの名前の中にファイルがある。ファイルの名前を変更する方法はありますか?mvトリックを行わないようです。 ls それを示す 90843_O\\'ConnorPaul_GeneralManager.jpg 私がしようとすると mv 90843_O\\'ConnorPaul_GeneralManager.jpg 90843_O_ConnorPaul_GeneralManager.jpg >新しい行のには、さらに入力を待つかのように何もしません。 私がしようとすると mv 90843_O\'ConnorPaul_GeneralManager.jpg 90843_O_ConnorPaul_GeneralManager.jpg エラーが出る mv:stat '90843_O \' ConnorPaul_GeneralManager.jpg 'はできません:そのようなファイルまたはディレクトリはありません また、特定のフォルダ内のすべてのファイルをに変更\'する簡単な方法はあり_ますか?
11 rename  quoting 

2
引用符付きのsshコマンド
私はこれについて何も見つけることができなかったという奇妙なエラーがあります。以下のコマンドでユーザーコメントを変更したいのですが。 $ sudo usermod -c "New Comment" user これはサーバーにログオンしていても機能しますが、20以上のサーバーで自動化したいと考えています。通常、リストを使用してサーバーをループし、コマンドを実行できますが、この場合はエラーが発生します。 $ for i in `cat servlist` ; do echo $i ; ssh $i sudo usermod -c "New Comment" user ; done serv1 Usage: usermod [options] LOGIN Options: lists usermod options serv2 Usage: usermod [options] LOGIN Options: lists usermod options . . …
11 shell  ssh  quoting 

2
引用符と二重引用符付きの引数をbashスクリプトに渡す
この時点で私は持っています: #!/bin/bash screen -p 'ScreenName' -x eval 'stuff '"'"$@"'"'\015' echo eval 'stuff '"'"$@"'"'\015' しかし、スクリプトを次のように呼び出すと、 # script.sh asd "asd" 'asd' 私の引数として渡された:asd asd asd そして私は出力を得ます: eval stuff 'asd asd asd'\015 私はaを除く:asd "asd" 'asd' スクリプトを変更して、引数行全体をすべて引用符で渡すにはどうすればよいですか?
11 bash  shell  quoting 

2
コマンドでエイリアスを作成する方法には、「と」が含まれています
いくつかの投稿前に、誰かがメモリをパーセンテージで表示する方法を尋ねました。誰かが返信しました: free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }' このコマンドを〜/ .bashrcのエイリアスに変換できるかどうか疑問に思っていました。しかし、エイリアスの構文は次のとおりです。 alias aliasname='command' これどうやってするの?このコマンドには、'との両方が含まれています"。別の方法を試しましたが、うまくいきませんでした。これは可能ですか?何か不足していますか?
10 bash  quoting  alias 

4
zshではなくbashでカットが失敗するのはなぜですか?
タブ区切りフィールドを含むファイルを作成します。 echo foo$'\t'bar$'\t'baz$'\n'foo$'\t'bar$'\t'baz > input 次の名前のスクリプトがあります zsh.sh #!/usr/bin/env zsh while read line; do <<<$line cut -f 2 done < "$1" 私はそれをテストします。 $ ./zsh.sh input bar bar これは正常に動作します。しかし、最初の行をbash代わりに呼び出すように変更すると、失敗します。 $ ./bash.sh input foo bar baz foo bar baz なぜこれが失敗しbashて動作するのzshですか? 追加のトラブルシューティング シバンの代わりに直接パスを使用envすると、同じ動作が生成されます。 echohere-stringを使用する代わりにでパイピングして<<<$lineも、同じ動作が生成されます。すなわちecho $line | cut -f 2。 使用するawk代わりに、cut 作品の両方のシェルのため。すなわち<<<$line awk '{print $2}'。

1
グロブパターンから定義された変数によるバッシュ置換
以下の例は問題を説明しています。FILENAME置換を使用したときに、エコーされてパターンとして認識されたときに正しく印刷されるのはなぜですか? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

6
名前にスペースが含まれているファイルを削除する
名前にスペースが含まれているすべてのファイルを削除しようとしています。次のコマンドを使用しています。しかし、それは私にエラーを与えています コマンド: ls | egrep '. ' | xargs rm ls | egrep '. 'コマンドのみを使用している場合、ファイル名にスペースを含むすべてのファイル名が表示されます。しかし、出力をrmに渡そうとすると、すべてのスペース(先頭または末尾)が削除されます。だから私のコマンドは正しく実行されていません。 名前に少なくとも1つのスペースがあるファイルを削除する方法についてのポインタはありますか?
10 shell  quoting  rm  xargs 

4
\\を使用する正規表現と\を使用する正規表現
どして grep e\\.g\\. <<< "this is an e.g. wow" そして grep e\.g\. <<< "this is an e.g. wow" 同じことをしますか? 3番目のスラッシュを追加すると、同じ結果になります。しかし、4番目のスラッシュを追加すると、機能しなくなります。これは、クラスの古い試験の質問に関係しています。2つのバックスラッシュのあるものは、「eg」で行を出力するために機能するかどうか尋ねましたが、最初は機能しないと思っていましたが、確認してみました。説明は何ですか?

2
文字列内のbashコマンドは、後で使用するときではなく、文字列を作成するときに実行されます
私はシェルスクリプティングに比較的慣れていませんが、lftpプログラムを使用するスクリプトをほぼ完成させました。私が問題を抱えているスクリプトの部分は、コマンドの長い文字列(で区切られている;)を作成するときです。 for var in something do ... commands_to_run+="echo Result is `tail -n 1 $somefile`;" done 私が気づいているのはtail、forループが反復しているときにプログラム(バッククォートで囲まれている)が実行されていることですが、スクリプトの後半でコマンドの文字列を呼び出したときではありません。 残念ながら、$ somefileの内容は、この段階ではまだ検査する準備ができていません。文字列の作成中にではなく、必要なときにコマンドを実行するにはどうすればよいですか?

2
括弧を含むファイル名のエラー
ファイル名をからに変更しようとするold.file(1).gzとnew.file.gz、構文エラーと表示され、ubuntu 12.04を使用しています。 mv old.file(1).gz new.file.gz bash: syntax error near unexpected token `('
10 bash  shell  quoting 


1
sudo -u username -s“ cmd arg”はコマンドが見つからないことを返します
私は以前コマンドを実行していました: sudo -u elasticsearch -s "ulimit -Hn" そして、Ubuntu 11.10で試してみるまで、ユーザーelasticsearchに表示されるulimit -Hnの値を返していました。そこに戻ります: /bin/bash: ulimit -Hn: command not found いくつかの異なるコマンドを試しましたが、引数を使用すると、常に「コマンドが見つかりません」と表示されます。 $ sudo -u elasticsearch -s "ls all.sh" /bin/bash: ls all.sh: command not found 引数を必要とするコマンドを実行するにはどうすればよいsudoですか?
10 sudo  quoting 

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