有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
我想将"模板"文件的输出传递给MySQL,该文件包含${dbName}散布的变量.什么是命令行实用程序来替换这些实例并将输出转储到标准输出?
我想使用正则表达式检查变量是否具有有效年份.阅读bash手册我明白我可以使用operator =〜
看下面的例子,我希望看到"不行",但我看到"OK".我究竟做错了什么?
i="test"
if [ $i=~"200[78]" ]
then
echo "OK"
else
echo "not OK"
fi
Run Code Online (Sandbox Code Playgroud) 我必须创建conf文件,init.d它们非常相似.这些文件允许在我的服务器上部署新的http服务.这些文件是相同的,只有一些参数从一个文件更改为另一个文件(listen_port域,服务器上的路径......).
由于这些文件中的任何错误都会导致服务错误,我想使用bash脚本创建这些文件.
例如:
generate_new_http_service.sh 8282 subdomain.domain.com /home/myapp/rootOfHTTPService
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种可以与bash一起使用的模板模块.这个模板模块将使用一些通用的conf和init.d脚本来创建新的脚本.
你有提示吗?如果不是,我可以使用python模板引擎.
在Linux中,假设我有以下文件(例如conf.properties):
HOST_URL=http://$HOSTNAME
STD_CONFIG=http://$HOSTNAME/config
USER_CONFIG=http://$HOSTNAME/config/$unconfigured
Run Code Online (Sandbox Code Playgroud)
我想创建另一个替换了所有环境变量的文件...比如说环境变量$ HOSTNAME是'myhost'并且未设置$ unconfigured,脚本应该产生以下输出:
HOST_URL=http://myhost
STD_CONFIG=http://myhost/config
USER_CONFIG=http://myhost/config/
Run Code Online (Sandbox Code Playgroud)
我认为这可以通过一个简单的单行程来完成,带有某种sed/awk魔法,但我不是专家,而且我的搜索已经静止,所以感谢任何帮助.
编辑:
我应该提一下,该文件可以是任何格式的文本文件,例如xml.我只想用环境中当前设置的任何东西替换任何看起来像env变量的东西.
我有问题让这个工作......
我有一个带占位符的SQL变量:
echo $SQL
SELECT PX_PROMOTION_ID, PRIORITY, STATUS, EXCLSVE, TYPE, PERORDLMT, PERSHOPPERLMT, TOTALLMT, RSV_INT, PX_GROUP_ID, CAMPAIGN_ID, STOREENT_ID, VERSION, REVISION, EFFECTIVE, TRANSFER, CDREQUIRED, EXPIRE, LASTUPDATEBY, TO_CHAR(LASTUPDATE, 'YYYYMMDD HH24MMSS') AS LASTUPDATE, TO_CHAR(STARTDATE, 'YYYYMMDD HH24MMSS') AS STARTDATE, TO_CHAR(ENDDATE, 'YYYYMMDD HH24MMSS') AS ENDDATE, TO_CHAR(RSV_TIME, 'YYYYMMDD HH24MMSS') AS RSV_TIME, RSV_REAL, TGTSALES, NAME, CODE, RSV_VCH, OPTCOUNTER FROM PX_PROMOTION WHERE LASTUPDATE BETWEEN (SELECT MAX(BATCHSTART) FROM XRPTEBATCHCONTROL) AND TIMESTAMP('$BATCH_END')
Run Code Online (Sandbox Code Playgroud)
我有另一个保存值的变量:
echo $BATCH_END
2012-11-14 17:06:13
Run Code Online (Sandbox Code Playgroud)
我想用值替换占位符.我在Unix脚本方面不是特别出色,但我试过这个:
echo $SQL | sed -e "s/'$BATCH_END/$BATCH_END/g"
Run Code Online (Sandbox Code Playgroud)
但它仍然没有被取代......
有人可以帮忙吗?我想替换占位符,并保持最终字符串分配给$ SQL
我还需要知道如何将输出的值返回到变量中,例如,我尝试过:
SQL=`echo "$SQL" | …Run Code Online (Sandbox Code Playgroud) 我有以下场景:我$SOME_IP定义了一个env变量,并希望在nginx块中使用它.参考nginx文档,我env在nginx.conf文件中使用如下指令:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
env SOME_IP;
Run Code Online (Sandbox Code Playgroud)
现在我想将变量用于a proxy_pass.我尝试过如下:
location / {
proxy_pass http://$SOME_IP:8000;
}
Run Code Online (Sandbox Code Playgroud)
但我最终得到此错误消息: nginx: [emerg] unknown "some_ip" variable
是否有比以下更优雅的懒惰评估方式:
pattern='$x and $y' x=1 y=2 eval "echo $pattern"
结果:
1 and 2
它有效,但eval "echo ..."只是感觉草率,可能在某种程度上不安全.在Bash中有更好的方法吗?
假设我打开了一个文件,然后将其解析为行.然后我用一个循环:
foreach line $lines {}
Run Code Online (Sandbox Code Playgroud)
在循环内部,对于某些行,我想用不同的行替换它们在文件中.可能吗?或者我必须写入另一个临时文件,然后在我完成后替换文件?
例如,如果文件包含
AA
BB
Run Code Online (Sandbox Code Playgroud)
然后我用小写字母替换大写字母,我想要包含原始文件
aa
bb
Run Code Online (Sandbox Code Playgroud)
谢谢!
我需要一个从bash脚本更改apache配置值的示例,这样我就可以通过在我的服务器上运行脚本而不是复制和粘贴整个配置文件来实现相同的配置.只是一个起点,让我想一下如何做到.
我在谷歌上花了最后2个小时,但我找不到任何线索.谢谢!
有谁知道如何在应用程序内切换 Firebase 项目/环境,假设您有一个包含不同开发 URL 的下拉菜单。我们不是在谈论不同的构建,这对我们不起作用,并且需要将多个版本发送到 TestFlight。
我们在这里找到了一段代码。
final options = FirebaseOptions.from({});
final firebaseApp = await FirebaseApp.configure(name: 'some_app_name', options: options);
Run Code Online (Sandbox Code Playgroud)
但我们不知道如何使用它,也不知道它是否能正常工作。
编辑
当我写这篇文章时,它还没有得到官方支持。现在是了。