2015-12-23 65 views
2

Problems with single quotes in a bash script報價在bash時提交 - [R CMD批處理命令

我已經看到了這個帖子,但我的問題是比較複雜,簡單地更換單引號用雙引號將不起作用。我需要在單引號內用單引號和雙引號運行R CMD BATCH命令,像這樣的

echo 'R CMD BATCH --no-save '--args "xxx.txt"' xxx.r' | qsub -cwd & 

我該怎麼辦?

+0

我實際上得到了一個更好的解決方案,因爲echo有一個內置選項-e,通過它可以使用轉義字符。 'echo -e'\ x22 \ x27something \ x27 \ x22'' – gipelttil

回答

2

我用我稱之爲5報價模式爲:

'this '"'"' that' 

=>this ' that

"this "'"'" that" 

=>this " that

+0

它有點難看,但它總是有效。使用AZERTY關鍵字,我盡力不使用這是一個手腕斷路器的反斜槓:) – cadrian

+0

非常感謝很多人!使用您的5引號模式,我成功地用1000個作業轟炸了羣集! – gipelttil

+0

歡迎您:)雖然我發現@ chepner的答案更優雅。 – cadrian

4

使用此文檔,而不是管道,這消除了對外層報價的需求。

qsub -cwd <<'EOF' & 
R CMD BATCH --no-save '--args "xxx.txt"' xxx.r 
EOF 
+0

感謝它也應該工作,但我更喜歡單線。 – gipelttil