Tag: bash

如何在swift脚本中运行terminal命令? (例如xcodebuild)

我想用swiftreplace我的bash脚本。 我不知道如何调用普通的terminal命令,如ls或xcodebuild #!/usr/bin/env xcrun swift import Foundation // Works println("Test") // Works ls // Fails xcodebuild -workspace myApp.xcworkspace // Fails $ ./script.swift ./script.swift:5:1: error: use of unresolved identifier 'ls' ls // Fails ^ … etc ….

如何使用for-each循环遍历bash中的文件path?

以下命令尝试枚举当前目录中的所有*.txt文件并逐个处理它们: for line in "find . -iname '*.txt'"; do echo $line ls -l $line; done 为什么我得到以下错误? ls: invalid option — 'e' Try `ls –help' for more information.

Shell脚本通用模板

数百万开发人员编写shell脚本来解决各种types的任务。 我使用shell脚本来简化部署,生命周期pipe理,安装或简单地作为粘合剂语言 。 我注意到没有人真正关心shell脚本的风格和质量。 很多团队花了好几个小时修复Java,C ++,…样式问题,但完全忽略了他们的shell脚本中的问题。 顺便说一下,通常在特定项目中没有实现shell脚本的标准方法,因此可能会在代码库中find几十个不同的丑陋的错误脚本。 为了在我的项目中克服这个问题,我决定创build一个通用的,足够好的shell脚本模板。 我将提供我的模板,使这个问题更有用。 开箱即用这些模板提供: 命令行参数处理 同步 一些基本的帮助 处理参数:getopts (最新版本: shell-script-template @ github ) #!/bin/bash # —————————————————————— # [Author] Title # Description # —————————————————————— VERSION=0.1.0 SUBJECT=some-unique-id USAGE="Usage: command -ihv args" # — Options processing ——————————————- if [ $# == 0 ] ; then echo $USAGE exit 1; fi while getopts […]

如何在Mac OSX Mountain Lion中升级Bash并将其设置为正确的path?

因为Mountain Lion仍然使用旧的bash 3.x,所以我想知道是否有一个很好的教程(或者如果有人可以在这里发布),如何将bash升级到最新版本。 另外,知道如何设置path以便可以在terminal中使用将是有帮助的。 提前致谢

从PHP运行Bash命令

我有一个bash脚本,我通过命令行像这样运行: ./script.sh var1 var2 我正在尝试执行上述命令后,我打电话给某个PHP文件。 我现在所拥有的是: $output = shell_exec("./script.sh var1 var2"); echo "<pre>$output</pre>"; 但它不工作。 我也使用exec和system来尝试它,但脚本从来没有得到执行。 但是,当我尝试运行shell_exec("ls"); 它确实工作, $output是所有文件的列表。 我不知道这是否是因为我使用的VPS的限制,或者如果问题在别的地方?

$ {0%/ *}在bash脚本中的含义是什么?

我想了解一个testing脚本,其中包括以下部分: SCRIPT_PATH=${0%/*} if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then cd $SCRIPT_PATH fi ${0%/*}代表什么? 谢谢

如何将一个globexpression式分配给一个Bash脚本中的variables?

当在bash脚本中执行以下两行代码时,“ls”会抱怨文件不存在: dirs=/content/{dev01,dev02} ls -l $dirs 当我使用-x选项运行脚本时,它似乎是在单引号内传递variables(这会阻止匹配): + dirs=/content/{dev01,dev01} + ls -l '/content/{dev01,dev01}' ls: /content/{dev01,dev01}: No such file or directory 如果我从交互式shell(无引号)执行“ls”命令,则返回两个目录。 我一直在阅读Bash参考手册(3.2版),并且看不到任何文件名匹配的原因(我没有传递-f到shell),或者我可以设置的任何东西来确保globbing发生。

ssh命令的执行不考虑.bashrc | .bash_login | 的.ssh / RC?

我想通过SSH远程执行命令,例如: ssh <user>@<host> <command> 需要执行的命令是在.bashrc中定义的别名,例如 alias ll='ls -al' 那么最终下面的命令应该被执行: ssh user@host "ll" 我已经发现.bashrc只能从交互式shell获得,所以在.bash_login中我把: if [ -f ~/.bashrc ]; then . ~/.bashrc fi 我也试图直接在.bash_login中定义别名。 我也尝试将.bashrc的别名定义/源代码放在.bash_profile中,也放在.ssh / rc中。 但是没有什么可行的。 请注意,我无法更改如何调用ssh命令,因为这是一些二进制安装脚本的一部分。 我唯一可以修改的就是环境。 当执行ssh命令时是否有其他可能性来获取这个别名? 有一些sshconfiguration需要适应吗?

如何强制'cp'来覆盖目录,而不是在里面创build另一个?

我想写一个Bash脚本,将覆盖现有的目录。 所以,我有一个目录富/我正在尝试覆盖吧/与它。 但是当我这样做, cp -Rf foo/ bar/ 会发生什么是一个新的bar / foo /目录被创build。 我不要那个。 在foo / a和b中有两个文件。 在bar /中也有相同名称的文件。 我想要foo / a和foo / b来replacebar / a和bar / b。

如何从一个bash脚本中ssh?

我试图创build一个SSH连接,并在脚本内的远程服务器上做一些事情。 然而,terminal提示我input密码,然后在terminal窗口而不是脚本中打开连接。 在我退出连接之前,命令不会被执行。 我怎么能从一个bash脚本ssh?