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

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

1
スペースのあるrsync exclude-fromディレクトリ
rsyncの「Mendeley Desktop」ディレクトリを除外しようとしています。 exclude-from =は次のとおりです。 Downloads *.o *.iso Dropbox Documents/Mendeley\ Desktop しかし、rsyncはまだMendeleyデスクトップをバックアップしています。 スペースのあるディレクトリを無視するようにrsyncを設定するにはどうすればよいですか?
13 rsync  quoting 

2
パラメーターリストの作成に使用されるbash文字列の連結
次のbashを考えます: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} エコーはPARMS文字列を期待どおりに表示し、エラーは表示されませんが、rsyncは+ =によって追加されたオプションが存在しないかのように静かに動作します。ただし、これは期待どおりに機能します。 PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 私はbash引用符で何かを台無しにしたと思います(常にそれらに問題がありました)が、文字列が正しく構築されているように見えても、オプションが何を無視するのか正確にはわかりません。

3
bashは余分な単一引用符を追加します
スクリプトの実行に問題があります。 デバッグモード(bash -x)で実行すると、bashが余分な引用符を追加していることがわかります。そのため、私のスクリプトは失敗しています。 これは私のスクリプト内です: testvar="\"sudo /home/pi/shared/blink.sh 27 off\"" ssh -n -q -q -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 $1 ${testvar} これは出力です: ssh -n -q -q -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 192.168.42.105 '"sudo' /home/pi/shared/blink.sh 27 'off"'
12 shell  ssh  quoting 


2
コマンドラインで正規表現のバックスラッシュをエスケープするために必要なバックスラッシュの数
私は最近、コマンドラインでいくつかの正規表現に問題があり、バックスラッシュを一致させるために、異なる数の文字を使用できることがわかりました。この数は、正規表現に使用される引用符(なし、単一引用符、二重引用符)に依存します。意味については、次のbashセッションを参照してください。 echo "#ab\\cd" > file grep -E ab\cd file grep -E ab\\cd file grep -E ab\\\cd file grep -E ab\\\\cd file #ab\cd grep -E ab\\\\\cd file #ab\cd grep -E ab\\\\\\cd file #ab\cd grep -E ab\\\\\\\cd file #ab\cd grep -E ab\\\\\\\\cd file grep -E "ab\cd" file grep -E "ab\\cd" file grep …


2
zshエイリアスでの引用符のエスケープ
テキストから改行を取り除くことに関するこの質問に続き、これを次のようにzshエイリアスに変換したいと思います。 alias striplines=' awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"' awkスクリプト内で引用符をエスケープしてみましたが、次のエラーが発生します。 awk: (FILENAME=bspsrobustness FNR=1) fatal: division by zero attempted (ファイルはと呼ばれますbspsrobustness) やりたいことはありますか?これをzshエイリアスではなくawkスクリプトに変換できると思いますが、これが最善のオプションですか?
12 shell  zsh  quoting  alias 

2
変数を含む文字列を展開/評価せずにエコーします[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4年前休業。 私はどこでも検索しました。エコーして印刷してみました。一重引用符と二重引用符を試しました。しかし、私はデータを解析してそれを変数に割り当てたので、その中に変数があるかどうかを評価したいと思います。次に、変数をワイルドカードに置き換えて、ファイルを検索します。 例: var="file.$DATE.txt" ### Where it goes wrong- Needs to identify that $DATE is within the $var varaible. test=$(echo "$var"|grep '\$') if [[ $test ]] then ### I would use whatever fix is discovered here as well test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/') fi ### (Actually pulling from remote machine …
12 bash  shell  quoting 

2
チルダを変数の一部として展開するにはどうすればよいですか?
bashプロンプトを開いて次のように入力すると、 $ set -o xtrace $ x='~/someDirectory' + x='~/someDirectory' $ echo $x + echo '~/someDirectory' ~/someDirectory 上記の5行目が表示されることを期待していました+ echo /home/myUsername/someDirectory。これを行う方法はありますか?私の元のBashスクリプトでは、変数xは実際には次のようなループを介して、入力ファイルのデータから入力されています。 while IFS= read line do params=($line) echo ${params[0]} done <"./someInputFile.txt" それでも、のecho '~/someDirectory'代わりに、同じような結果が得られecho /home/myUsername/someDirectoryます。


3
SSHリモートコマンドライン引数はどのように解析されますか
リモートsshコマンドへの引数を二重にエスケープする必要があるという質問と回答を見てきました。私の質問は次のとおりです。正確に、いつ、2番目の解析が行われますか? 次を実行すると: $ ssh otherhost pstree -a -p 次の出力が表示されます。 |-sshd,3736 | `-sshd,1102 | `-sshd,1109 | `-pstree,1112 -a -p リモートコマンド(pstree)の親プロセスはsshdであり、リモートコマンドへのコマンドライン引数を解析するシェルがないように見えるため、二重引用符またはエスケープが必要であるように見えません(しかし、それは間違いなくです)。代わりに最初にそこにsshし、ログインシェルを取得して実行するpstree -a -pと、出力に次のように表示されます。 ├─sshd,3736 │ └─sshd,3733 │ └─sshd,3735 │ └─bash,3737 │ └─pstree,4130 -a -p したがってbash、その場合にコマンドライン解析を実行するシェルがそこにあるのは明らかです。しかし、リモートコマンドを直接使用する場合、シェルがないように見えるので、なぜ二重引用符が必要なのでしょうか。
11 bash  shell  ssh  process  quoting 

2
単一引用符内で変数を使用する方法
一重引用符に埋め込まれた二重引用符で属性を入力として受け取るアプリケーションがあります。たとえば、次の正しいコマンドを見てください。 command -p 'cluster="cl1"' それを自動化するために$CLUSTER、変数としてを使用してbashファイルを作成しました。私の命令はどうあるべきですか?つまり、cl1の代わりに何を配置すればよいですか。 上記のコマンドを変更すると、受け入れられなくなりますのでご注意ください。たとえば:command -p "cluster=cl1"受け入れられません

2
引用符付きと引用符なしの文字列展開
for i in $(xrandr); do echo "$i" ; done for i in "$(xrandr)"; do echo "$i"; done for i in "$(xrandr)"; do echo $i; done 1が2と異なる理由を理解していますが、3が2とは異なる出力を提供するのはなぜですか?出力についても説明してください。引用符は改行でどのように機能しますか?

2
ファイル名にスペースがあるスクリプトの問題
scpがリモートホストからローカルにファイルを戻すスクリプトを持っています。ファイル名にスペースが含まれている場合があります。scpは、ファイル名にスペースが含まれていないことを好みません。何らかの理由で、スペースを処理する私の試みは正しいscpパスをもたらしませんでした。 コード: PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg scp $PATH Me@10.1.10.33:/Users/Me/Desktop 結果 Cannot find directory: var/root/Documents/MyFile Cannot find directory: OG-v1.2.3.pkg PATHを引用符で囲むと"$PATH"、同じエラーが発生します。 エスケープされたスペースとスペースの交換も機能しませんが、私が知る限り、次のようにする必要があります。 ESC_PATH=${PATH/' '/'\ '} エスケープされたパスを印刷すると、編集が機能したことが示されますが、 echo $ESC_PATH > /var/root/Documents/MyFile\ OG-v1.2.3.pkg

2
bashで感嘆符を適切にエスケープする方法は?
今日、Twitterのパスワードジェネレーターをゴルフでコーディングしようとしたときに、私は手ぶれで捕まった。 import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9)) 90文字。それは多くの予備スペースなので、私は基準を引き上げ、それも実行可能にすることにしました。 echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 139文字。感嘆符で明らかにbashチョークを除いて、いいですね。 badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg bash: !/usr/bin/python\nimport: event not found 厄介な感嘆符。「逃げよう」と思った!結局のところ、私には予備のキャラクターが1人います。 echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg 明らかに... badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print …

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