簡體   English   中英

如何在PHP中正確執行Shell命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM