Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本编写和使用反斜杠加回记号?_Shell - Fatal编程技术网

Shell脚本编写和使用反斜杠加回记号?

Shell脚本编写和使用反斜杠加回记号?,shell,Shell,我正试图用Wordpress做一些操作,我正试图为它写一个脚本 # cat /usr/local/uftwf/_wr.sh #!/bin/sh # $Id$ # table_prefix=`grep ^\$table_prefix wp-config.php | awk -F\' '{print $2}'` echo $table_prefix # 然而,我得到了以下输出 # /usr/local/uftwf/_wr.sh ABSPATH ABSPATH wp-settings.ph

我正试图用Wordpress做一些操作,我正试图为它写一个脚本

# cat /usr/local/uftwf/_wr.sh 
#!/bin/sh
# $Id$
#

table_prefix=`grep ^\$table_prefix wp-config.php | awk -F\' '{print $2}'`
echo $table_prefix
# 
然而,我得到了以下输出

# /usr/local/uftwf/_wr.sh 
 ABSPATH ABSPATH wp-settings.php_KEY LOGGED_IN_KEY NONCE_KEY AUTH_SALT SECURE_AUTH_SALT LOGGED_IN_SALT NONCE_SALT wp_0zw2h5_ de_DE WPLANG WP_DEBUG s all, stop editing! Happy blogging. */
# 
从命令行运行时,我得到了所需的正确输出:

# grep ^\$table_prefix wp-config.php | awk -F\' '{print $2}'
wp_0zw2h5_
# 
脚本出了什么问题?

您应该试试

#!/bin/sh

table_prefix=$(awk -F"'" '/^\$table_prefix/{print $2}' wp-config.php)
echo $table_prefix
你应该试试

#!/bin/sh

table_prefix=$(awk -F"'" '/^\$table_prefix/{print $2}' wp-config.php)
echo $table_prefix

这个对你有用吗

 awk -F\' '/^\$table_prefix/ {print $2}' wp-config.php
使现代化 如果您使用的是shell脚本,则无需调用awk、grep:

#!/bin/sh
while read varName op varValue theRest
do
    if [ "_$varName" = "_\$table_prefix" ]
    then
        table_prefix=${varValue//\'/}   # Remove the single quotes
        table_prefix=${table_prefix/;/} # Remove the semicolon
        break
    fi
done < wp-config.php

echo "Found: $table_prefix"

这个对你有用吗

 awk -F\' '/^\$table_prefix/ {print $2}' wp-config.php
使现代化 如果您使用的是shell脚本,则无需调用awk、grep:

#!/bin/sh
while read varName op varValue theRest
do
    if [ "_$varName" = "_\$table_prefix" ]
    then
        table_prefix=${varValue//\'/}   # Remove the single quotes
        table_prefix=${table_prefix/;/} # Remove the semicolon
        break
    fi
done < wp-config.php

echo "Found: $table_prefix"

这看起来就像grep没有忽略所有不匹配的行一样,当您发出echo$table_前缀而不加引号时,它会将所有空白折叠到一个输出行中,如果发出:echo$table_前缀,您将看到与输出的所有其他空白相匹配

我建议使用以下sed表达式:

table_prefix=$(sed -n "s/^\$table_prefix.*'\([^']*\)'.*/\1/p" wp-config.php)

这看起来就像grep没有忽略所有不匹配的行一样,当您发出echo$table_前缀而不加引号时,它会将所有空白折叠到一个输出行中,如果发出:echo$table_前缀,您将看到与输出的所有其他空白相匹配

我建议使用以下sed表达式:

table_prefix=$(sed -n "s/^\$table_prefix.*'\([^']*\)'.*/\1/p" wp-config.php)
问题在于grep命令:

它要么需要三个反斜杠,而不是一个反斜杠,要么需要使用简单得多的单引号:

table_prefix=$(grep '^$table_prefix' wp-config.php | awk -F"'" '{print $2}')
它也值得使用$。。。一般符号

问题在于反引号删除了反斜杠,因此对shell变量求值,传递给grep的内容很可能只是^,并且每行都以行首开始。

问题在于grep命令:

它要么需要三个反斜杠,而不是一个反斜杠,要么需要使用简单得多的单引号:

table_prefix=$(grep '^$table_prefix' wp-config.php | awk -F"'" '{print $2}')
它也值得使用$。。。一般符号



问题是反引号删除了反斜杠,因此对shell变量进行求值,传递给grep的内容很可能只是^,并且每行都以行首开头。

输入行是什么样子的?感谢大家的帮助!输入行是什么样子的?谢谢大家的帮助!我更喜欢你的,它可以通过shell运行,但问题和我的一样,只要我把一个文件放入其中并运行它,这个文件和在shell中运行不一样,我更喜欢你的,它可以通过shell运行,但和我的问题一样,只要我把一个文件放进去,运行它,它的工作原理和在shell中运行的工作原理不一样,对你的代码行来说,它是独立的代码行,从shell本身执行,但当它通过shell脚本fileHai Vu运行时,它就不起作用了,如果=操作符触摸字符串,它就不起作用了,与本例类似:$table_prefix='foo_'@斯普特尼克:等号必须由spaces@alexus:我仅在Mac OS X Snow Leopard、Red Hat version?和Linux Mint 12下测试了我的解决方案awk和shell。它们都可以工作,所以问题出在其他地方,我无法访问您的系统来提供帮助。对于您的行,它与从shell本身执行的独立行一样工作,但在通过shell脚本fileHai Vu运行时不工作,如果=运算符触摸字符串,这将不工作,如本例中:$table_prefix='foo_u'@斯普特尼克:等号必须由spaces@alexus:我仅在Mac OS X Snow Leopard、Red Hat version?和Linux Mint 12下测试了我的解决方案awk和shell。它们都可以工作,所以问题出在其他地方,我无法访问您的系统来提供帮助。使用\\\help,我将尝试使用$。。。稍后,另一个技巧是使用字符类[$]代替\$或\\\$或其他任何东西。但是,总的来说,我会使用单引用版本。只有当您需要匹配单引号时,这才会变得混乱。使用\\\Help,我将尝试使用$。。。稍后,另一个技巧是使用字符类[$]代替\$或\\\$或其他任何东西。但是,总的来说,我会使用单引用版本。只有当您需要匹配单引号时,这才会变得混乱。