Questions tagged «scripting»

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

2
在Linux上使用`#!/ usr / bin / env命令--argument`的Shebang行失败
我有一个简单的脚本: #!/usr/bin/env ruby --verbose # script.rb puts "hi" 在我的OSX机器上,它运行良好: osx% ./script.rb hi 但是,在我的Linux机器上,它引发了一个错误 linux% ./script.rb /usr/bin/env: ruby --verbose: No such file or directory 如果我手动运行shebang线,效果很好 linux% /usr/bin/env ruby --verbose ./script.rb hi 但是,如果我打包ruby --verbose到一个参数中,我可以复制错误env linux% /usr/bin/env "ruby --verbose" ./script.rb /usr/bin/env: ruby --verbose: No such file or directory 因此,我认为这与env解释shebang线的重置有关。我正在使用GNU coreutils 8.4 env: linux% …


5
如何在条件语句中退出脚本?
我正在编写一个bash脚本,如果用户不是root用户,我想在其中退出。有条件的工作正常,但脚本不会退出。 [[ `id -u` == 0 ]] || (echo "Must be root to run script"; exit) 我尝试使用&&代替,;但是都没有用。

3
在启动/启动过程中运行脚本;init.d和cron @reboot
我目前正在尝试了解在系统启动/引导时运行脚本的init.dcron和cron 之间的区别@reboot。 使用的@reboot(这种方法中提到的这个论坛由hs.chandra)是一些什么比较简单,通过简单地进入crontab -e并创建一个@reboot /some_directory/to_your/script/your_script.txt,然后your_script.txt,应在每次系统启动时执行。有深入的解释@reboot是这里 或者,通过嵌入/etc/init.d/your_script.txt到脚本的第二行,即: #!/bin/bash # /etc/init.d/your_script.txt 您可以运行,chmod +x /etc/init.d/your_script.txt并且your_script.txt每次引导系统时也应运行该结果。 Q1:两者之间的主要区别是什么?Q2:哪个更强大?Q3:两者中有更好的一个吗?Q4:这是嵌入脚本以在引导过程中运行的正确方法吗? 我将合并一个bash .sh文件以在启动期间运行。

7
执行远程命令,完全脱离ssh连接
我有2台计算机,localpc并且remoteserver。 我需要localpc在上执行一些命令remoteserver。它需要做的一件事情就是启动一个运行数小时的备份脚本。我希望命令localpc“启动”,然后完全在上运行remoteserver,就像localpc从来没有出现过一样。 到目前为止,这是我所做的: remoteserver 包含具有以下脚本: /root/backup.sh localpc 按计划运行: ssh root@remoteserver 'nohup /root/backup.sh' & 我这样做正确吗?有一个更好的方法吗?这样我会遇到麻烦吗?

7
等同于Autohotkey?
是否有与AutoHotkey等效的产品/方法。对于那些不知道的人,它的产品可以让您对鼠标的移动和键盘进行编程。这使我可以“宏化”程序上的某些功能,而不必手动执行。在过去,他们通常称它们为键盘填充器。但这只是解决方案的一半,因为我也需要“鼠标移动”填充器。 有这样的野兽吗?

15
在许多服务器上通过SSH自动运行命令
.txt文件中有一个IP地址列表,例如: 1.1.1.1 2.2.2.2 3.3.3.3 每个IP地址的后面都有一个服务器,并且每个服务器上的端口22上都运行着一个sshd。known_hosts列表中并不是每个服务器(在我的PC上为Ubuntu 10.04 LTS / bash)。 如何在这些服务器上运行命令并收集输出? 理想情况下,我想在所有服务器上并行运行命令。 我将在所有服务器上使用公钥身份验证。 以下是一些潜在的陷阱: ssh提示我将给定服务器的ssh密钥放入我的known_hosts文件中。 给定的命令可能返回非零退出代码,指示输出可能无效。我需要认识到这一点。 例如,由于网络错误,可能无法建立到给定服务器的连接。 如果命令的运行时间比预期的长,或者服务器在运行命令时关闭,则应该有一个超时时间。 服务器是AIX / ksh(但我认为那并不重要。

2
正确使用setuid位
我有一个由普通用户运行时需要root特权的进程。显然,我可以使用“ setuid位”来完成此操作。在POSIX系统上执行此操作的正确方法是什么? 另外,如何使用使用解释器的脚本(bash,perl,python,php等)来做到这一点?
45 scripting  setuid 




4
如何从进程中获取整个命令行?
如何使用正在运行的进程的进程名称获取命令参数或整个命令行? 例如此过程: # ps PID USER TIME COMMAND 1452 root 0:00 /sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid 而我想要的/sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid还是论点。我知道进程名称,并需要它的参数。我在SliTaz上使用Busybox。

6
通用Node.js shebang?
如今,Node.js非常受欢迎,我一直在上面编写一些脚本。不幸的是,兼容性是一个问题。正式地,应该将Node.js解释器称为node,但是Debian和Ubuntu附带了一个名为的可执行文件nodejs。 我希望Node.js可以在尽可能多的情况下使用的可移植脚本。假设文件名是foo.js,我真的希望脚本以两种方式运行: ./foo.js如果node或nodejs位于中,则运行脚本$PATH。 node foo.js也运行脚本(假设解释器称为node) 注意: xavierm02和我本人的答案是多语言脚本的两个变体。我仍然对纯粹的shebang解决方案感兴趣,如果有的话。

7
将xargs与文件输入配合使用
说我有一个以下文件 bob john sue 现在,这些直接corrospond到(在这种情况下)URL模式如http://example.com/persons/bob.tar,john.tar,sue.tar。 我想采取这些路线,并贯穿它们xargs。我不知道是什么传递给正在执行的命令。如何从提示符(例如,我想简单地回显每行cat file | xargs echo $PARAM)或bash脚本中访问参数。
41 bash  scripting  xargs 

5
用实际值替换文件中的环境变量?
有没有一种简单的方法可以替换/评估文件中的环境变量?假设我有一个config.xml包含以下内容的文件: <property> <name>instanceId</name> <value>$INSTANCE_ID</value> </property> <property> <name>rootPath</name> <value>/services/$SERVICE_NAME</value> </property> ...等等。我想$INSTANCE_ID用INSTANCE_ID环境变量$SERVICE_NAME的值和SERVICE_NAMEenv var 的值替换文件。我不会事先知道需要哪个环境变量(或者,如果有人将新的环境变量添加到配置文件中,我不想更新脚本)。谢谢!

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.