【发布时间】:2013-06-11 04:44:12
【问题描述】:
我有以下 sed 命令:
Ctimezone="$shortName = exec('date +%Z');\
$longName = timezone_name_from_abbr($shortName);\
date_default_timezone_set($longName);"
sed -i 10s@.*@$Ctimezone@ /home/file.php
但是这给了我错误:
sed -e expression #1, char 7: unterminated 's' command
我对 sed 的理解不是很好,所以我确信它很容易解决,但我自己无法解决。
如果您需要更多信息,请告诉我
改为:
sed -i "10s@.*@$Ctimezone@" /home/file.php
但是放入file.php的内容是:
= exec('日期 +%Z'); = timezone_name_from_abbr(); date_default_timezone_set();
不是
$shortName = exec('日期 +%Z'); $longName = timezone_name_from_abbr($shortName); date_default_timezone_set($longName);
【问题讨论】:
-
需要引用sed表达式:
sed -i "10s@.*@$Ctimezone@" /home/file.php -
我不确定 @ 符号对 bash 变量有什么作用,但请尝试在实际 sed 命令中将 $Ctimezone 更改为 ${Ctimezone}。
-
@fedorqui 有效,但最终输入到 file.php 中的是 " = exec('date +%Z'); = timezone_name_from_abbr(); date_default_timezone_set();
-
是的,这就是您的代码所做的。我们不知道你想做什么。
-
@KarolyHorvath 抱歉,Ctimezone 中的所有内容都应视为字符串,因此 $shortName 不是 bash 变量等。