Questions tagged «scripting»

脚本是由解释程序执行而不是编译为独立可执行程序的命令或指令序列。

2
非交互式创建SSL证书[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 5年前关闭。 我想以静默方式(非交互方式)创建SSL证书。即,没有得到任何数据提示。 我创建证书的通常方法是: openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \ -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 我尝试了以下方法: openssl genrsa -out server.key 2048 touch openssl.cnf cat >> openssl.cnf <<EOF [ req ] prompt = no distinguished_name = req_distinguished_name [ req_distinguished_name ] C = GB ST = Test State L …
28 scripting  ssl 

2
使用`set -eu`时正确的EXIT和ERR陷阱行为
与ERR和EXIT陷阱一起使用set -e(errexit),set -u(nounset)时,我观察到一些奇怪的行为。它们似乎相关,因此将它们放在一个问题中似乎是合理的。 1)set -u不触发ERR陷阱 码: #!/bin/bash trap 'echo "ERR (rc: $?)"' ERR set -u echo ${UNSET_VAR} 预期:ERR陷阱被调用,RC!= 0 实际:未调用ERR陷阱,RC == 1 注意:set -e不改变结果 2)set -eu在EXIT陷阱中使用退出代码是0而不是1 码: #!/bin/bash trap 'echo "EXIT (rc: $?)"' EXIT set -eu echo ${UNSET_VAR} 预期:调用EXIT陷阱,RC == 1 实际:调用EXIT陷阱,RC == 0 注意:使用时set +e,RC ==1。当任何其他命令引发错误时,EXIT陷阱将返回正确的RC。 编辑:关于该主题的一篇SO帖子带有一个有趣的注释,表明这可能与所使用的Bash版本有关。使用Bash 4.3.11测试此代码段会导致RC = …


1
在shebang之后签到?
在Apache httpd项目的“ support / apxs.in”脚本中,之后是带@符号的文本#!。也就是说,脚本的第一行是: #!@perlbin@ -w 这是Perl还是UNIX内核?换句话说,可以使用path/to/script/script_name.in?执行该脚本。 如果不是,那么使用#!?启动脚本的原因是什么?

6
如何将SSH发布密钥分发到服务器列表,而不必一遍又一遍地输入密码?
最近,我获得了用户名/密码访问服务器列表的权限,并希望将我的SSH公钥传播到这些服务器,以便我可以更轻松地登录。 这样很清楚: 远程服务器上没有任何可用于自动执行此操作的公钥 这是我第一次登录这些服务器,并且我不想经常输入我的凭据来访问它们 我也不想一遍又一遍地ssh-copy-id在for循环中输入密码。

7
反转布尔变量
我想尝试简单的脚本 flag=false while !$flag do read x if [ "$x" -eq "true" ] then flag=true fi echo "${x} : ${flag}" done 但是,当我运行它时,如果键入true,我会看到x="true"和flag="true",但是循环并没有结束。脚本有什么问题?如何正确地将布尔变量取反?
26 bash  scripting 



10
一线vs脚本
我注意到许多问题,答案和评论,表示不屑于(有时甚至担心)编写脚本而不是单行代码。所以,我想知道: 什么时候以及为什么我应该编写一个独立的脚本而不是一个“单一代码”?或相反亦然? 两者的用例和利弊是什么? 有些语言(例如awk或perl)是否比其他语言(例如python)更适合单行?如果是这样,为什么? 只是在个人喜好问题上,还是在特定情况下有充分的理由(即客观的理由)写一个或另一个?那是什么原因 定义 one-liner:直接在shell命令行中键入或粘贴的任何命令序列。常累及管道和/或使用的语言,如sed,awk,perl,和/或工具,如grep或cut或sort。 定义特征是在命令行上直接执行-长度和格式无关。“单行代码”可以全部在一行上,也可以有多行(例如sh for loop,或嵌入式awk或sed代码,并带有换行和缩进以提高可读性)。 script:使用任何解释语言的任何命令序列,这些命令序列保存到文件中,然后执行。脚本可以完全用一种语言编写,也可以是使用其他语言围绕多个“单行代码”的shell脚本包装。 我有自己的答案(我将在稍后发布),但是我希望这成为有关该主题的规范问答,而不仅仅是我个人的看法。

3
在屏幕上运行脚本
我想在分离的屏幕上运行bash脚本。该脚本会多次调用一个程序,每次等待都花费很长时间。我的第一个想法是只打开一个屏幕,然后调用该脚本,但是似乎无法ctrl-a d在脚本运行时分离(by )。因此,我进行了一些研究,发现此指令将shebang替换为以下内容: #!/usr/bin/screen -d -m -S screenName /bin/bash 但这也不起作用(选项无法识别)。有什么建议么? PS这只是我现在想到的screen -dmS name ./script.sh,可能可以满足我的目的,但是我仍然很好奇如何将其合并到脚本中。谢谢。

4
使用回显打印彩色文本
我知道使用回声(例如红色)打印彩色文本的代码是:echo -e "\e[1;31m This is red text \e[0m" 并且我知道在此示例中,31是红色代码,其他颜色的数量是: Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 Light Gray 0;37 White 1;37 对于背景色,数字是40到47 我的问题是:\e和[和m(31岁以后)在这里到底是什么意思?我在手册页中读到\ …

5
如果一起测试和查找命令,如何使用bash的?
我有一个包含崩溃日志的目录,并且我想在基于查找命令的bash脚本中使用条件语句。 日志文件以以下格式存储: /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 我希望if语句仅在存在最近5分钟内已修改的特定应用程序的崩溃日志时才返回true。find我将使用的命令是: find /var/log/crashes -name app-\*\.log -mmin -5 我不确定如何if正确地将其合并到语句中。我认为这可能有效: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 我不清楚一些地方: 我已经看过if标志,但是我不确定应该使用哪一个(如果有的话)。 我是否需要该test指令,还是应该直接针对find命令的结果进行处理,还是可以find... | wc -l用来获取行数? 回答这个问题不是100%必要的,而是test用于测试命令返回的返回码吗?而且它们在stdout/ 之外是看不见的stderr。我阅读了该man页面,但对于何时使用test以及如何对其进行调试仍然不清楚。



8
Linux最通用的脚本语言是?
这个问题是从Stack Overflow 迁移过来的,因为可以在Unix&Linux Stack Exchange上回答。 迁移 7年前。 我们正在为Linux系统编写脚本,关于使用哪种最普遍的Linux当前脚本语言一直存在一些争论。Bash,SH,Posix?什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.