[英]How can I properly execute a shell command in PHP?
我有以下shell命令:
comm -3 <(sort file1) <(sort file2) | sed -e 's/^[ \t]*//' | awk -F , '{if (a[$1]) {print "^"$1","} {a[$1] = $0}}' > data2.txt
如果我通過exec
運行它並轉義所有`
exec('comm -3 <(sort file1) <(sort file2) | sed -e \\'s/^[ \\t]*//\\' | awk -F , \\'{if (a[$1]) {print "^"$1","} {a[$1] = $0}}\\' > data2.txt');
它失敗:
sh: 1: Syntax error: "(" unexpected
如果我不使用花括號,則shell命令本身將失敗:
awk: cmd. line:1: {if \(a[$1]\) {print "^"$1","} {a[$1] = $0}}
awk: cmd. line:1: ^ backslash not last character on line
awk: cmd. line:1: {if \(a[$1]\) {print "^"$1","} {a[$1] = $0}}
awk: cmd. line:1: ^ syntax error
sh: 1: cannot open (sort: No such file
如何使用PHP和exec
函數成功運行此Shell命令?
我通過使用bash -c
解決了這個問題,然后轉義了單引號:
bash -c 'comm -3 <(sort {$current_file}) <(sort {$new_file}) | sed -e '"'"'s/^[ \\t]*//'"'"' | awk -F , '"'"'{if (a[$1]) {print "^"$1","} {a[$1] = $0}}'"'"' > {$meta_file}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.