标签: shell-script

如何在 bash 脚本中连接字符串?

如何在 shell 脚本中连接字符串和变量?

stringOne = "foo"

stringTwo = "anythingButBar"

stringThree = "? 和 ?"

我想输出“foo and somethingButBar”

script bash shell-script

21
推荐指数
2
解决办法
12万
查看次数

我应该在我的所有脚本上放置 *.sh 和 *.rb 文件扩展名吗?

我的 $HOME/bin 目录中有一堆手动执行的可执行脚本。有些是用 bash 编写的,有些是用 Ruby 编写的。它们都在顶部有一条 shebang 行,告诉 shell 使用什么解释器(在我的例子中是 bash 或 Ruby)。

我想知道是否最好在这些脚本上放置文件扩展名以指示它们是用什么脚本语言编写的?例如,Ruby 中的脚本具有 *.rb 后缀,而 bash 中的脚本具有 *.sh 后缀。

目前,这些脚本只有简单的名称,没有文件扩展名。

最佳做法是什么?

script bash shell-script

21
推荐指数
3
解决办法
1万
查看次数

编写可在任何 shell 上运行的 shell 脚本(使用多个 shebang 行?)

我刚刚开始更深入地研究 shell 脚本,我总是把我的脚本放在一个文件中,标记它chmod +x然后完成/path/to/script.sh并让任何默认的解释器使用它,我认为它是 zsh,因为这就是我用于我的外壳。显然,它似乎只是/bin/sh默认情况下,即使我从 zsh 提示符执行脚本,因为我开始将特定于 zsh 的东西放入我的脚本中,除非我运行zsh /path/to/script.sh.

为了切入正题,以下是我的问题:

  1. #!/path/to/shell开头没有 shebang 行 ( )时,哪个 shell 执行脚本?我假设/bin/sh但我无法确认。
  2. 在编写可在任何平台上运行的 shell 脚本方面,什么被认为是“最佳实践”?(好吧,这是一种开放式)
  3. 如果 zsh 不可用,是否可以编写一个尝试使用 zsh 并回退到 bash 的脚本?我试过放置两条shebang行,如下所示,但是bad interpreter: /bin/zsh: no such file or directory如果我在没有zsh的机器上尝试它只会出错。

    #!/bin/zsh

    #!/bin/bash

bash zsh shell shell-script bash-scripting

21
推荐指数
1
解决办法
7820
查看次数

我可以将别名“导出”到调用脚本的 SHELL 吗?

我正在尝试编写一个定义某些别名的实用程序脚本。
我的 SHELL 是tcsh(不能改变)。

我尝试了以下

#!/bin/tcsh  
alias log 'less ~/logs/log.`date '+%Y%m%d'`''
Run Code Online (Sandbox Code Playgroud)

然后我像这样运行它:

./myscript  
log
Run Code Online (Sandbox Code Playgroud)

我得到的输出是: log: Command not found.

当然,如果我像这样运行它:

source myscript  
log
Run Code Online (Sandbox Code Playgroud)

一切安好。

有什么方法可以不指定source ...吗?

alias shell-script tcsh

20
推荐指数
1
解决办法
2万
查看次数

如何在bash中将变量传递给HEREDOC?

我想做这样的事情:

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

linux bash shell-script

19
推荐指数
1
解决办法
3万
查看次数

在 OS X 10.6 中通过网络连接运行脚本。(如/etc/network/if-up.d/)

当 Mac OS X 中出现网络接口时,有没有办法运行脚本?

我试过在 /etc/ppp 中放置一个名为 ip-up 的脚本,但是当我断开连接并重新连接到无线网络时它似乎没有启动。

我宁愿不必运行 cron 作业来不断检查网络状态是否已更改。在某些 linux 发行版中,您可以通过在 /etc/network/if-up.d/ 中放置一个脚本来完成此操作。Mac OS X 有类似的东西吗?

networking automation shell-script macos

18
推荐指数
4
解决办法
2万
查看次数

以编程方式确定脚本是在笔记本电脑还是台式机上执行?

是否有任何可靠的方法可以从 bash 脚本中(以编程方式)确定它是在笔记本电脑还是台式计算机上执行的?

我显然可以提示用户询问他们,但这很笨拙。

linux shell-script

18
推荐指数
4
解决办法
3112
查看次数

如何使用回显打印新行字符?

hexdump像这样转储一个字符串2031 3334 2e30 0a32 2032 3331 302e 000a。很明显,这0x0a是换行符,但是,当我尝试回显这个字符串时,我总是得到1 430.2 2 13.0- 新行被替换为空格,即使我使用了-e标志。

可能是什么问题?尾矿会\0破坏输出吗?有没有其他方法可以打印0x0a新行?

谢谢和最好的问候。

bash shell shell-script newlines echo

17
推荐指数
2
解决办法
9万
查看次数

使用 shell 脚本/命令编辑 xml 文件

我需要使用 unix 脚本或命令执行此操作 /home/user/app/xmlfiles 中有一个 xml 文件,例如

<book>
   <fiction type='a'>
      <author type=''></author>
   </fiction>
   <fiction type='b'>
      <author type=''></author>
   </fiction>
   <Romance>
       <author type=''></author>
   </Romance>
</book>
Run Code Online (Sandbox Code Playgroud)

我想将小说中的作者类型编辑为 local 。

   <fiction>
      <author type='Local'></author>
   </fiction>
Run Code Online (Sandbox Code Playgroud)

我需要单独使用属性 b更改小说标签中的作者类型。请使用 unix shell 脚本或命令帮助我解决这个问题。谢谢 !

unix bash shell shell-script bash-scripting

17
推荐指数
3
解决办法
7万
查看次数

在文本文件中下载 Youtube 视频...?

如果您熟悉 Linux,请参阅以下脚本...

我有一个文本文件,其中包含由新行分隔的 Youtube URL (list.txt) ......我使用

cat list.txt | youtube-dl -f best 
Run Code Online (Sandbox Code Playgroud)

下载列表中的所有内容

这工作正常,但我想在 Windows 批处理文件上模拟它..

set /p data=<list.txt
youtube-dl -f best %data%
Run Code Online (Sandbox Code Playgroud)

这也有效..但它只下载列表中的第一个视频。

一个简单的解决方案wrt编码将是首选。

PS:另外可以肯定的是,我不是在寻找使用 youtube-dl 命令的解决方案

youtube batch shell-script pipe

17
推荐指数
1
解决办法
4万
查看次数