如何在 shell 脚本中连接字符串和变量?
stringOne = "foo"
stringTwo = "anythingButBar"
stringThree = "? 和 ?"
我想输出“foo and somethingButBar”
我的 $HOME/bin 目录中有一堆手动执行的可执行脚本。有些是用 bash 编写的,有些是用 Ruby 编写的。它们都在顶部有一条 shebang 行,告诉 shell 使用什么解释器(在我的例子中是 bash 或 Ruby)。
我想知道是否最好在这些脚本上放置文件扩展名以指示它们是用什么脚本语言编写的?例如,Ruby 中的脚本具有 *.rb 后缀,而 bash 中的脚本具有 *.sh 后缀。
目前,这些脚本只有简单的名称,没有文件扩展名。
最佳做法是什么?
我刚刚开始更深入地研究 shell 脚本,我总是把我的脚本放在一个文件中,标记它chmod +x然后完成/path/to/script.sh并让任何默认的解释器使用它,我认为它是 zsh,因为这就是我用于我的外壳。显然,它似乎只是/bin/sh默认情况下,即使我从 zsh 提示符执行脚本,因为我开始将特定于 zsh 的东西放入我的脚本中,除非我运行zsh /path/to/script.sh.
为了切入正题,以下是我的问题:
#!/path/to/shell开头没有 shebang 行 ( )时,哪个 shell 执行脚本?我假设/bin/sh但我无法确认。如果 zsh 不可用,是否可以编写一个尝试使用 zsh 并回退到 bash 的脚本?我试过放置两条shebang行,如下所示,但是bad interpreter: /bin/zsh: no such file or directory如果我在没有zsh的机器上尝试它只会出错。
#!/bin/zsh
#!/bin/bash
我正在尝试编写一个定义某些别名的实用程序脚本。
我的 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 ...吗?
我想做这样的事情:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
当 Mac OS X 中出现网络接口时,有没有办法运行脚本?
我试过在 /etc/ppp 中放置一个名为 ip-up 的脚本,但是当我断开连接并重新连接到无线网络时它似乎没有启动。
我宁愿不必运行 cron 作业来不断检查网络状态是否已更改。在某些 linux 发行版中,您可以通过在 /etc/network/if-up.d/ 中放置一个脚本来完成此操作。Mac OS X 有类似的东西吗?
是否有任何可靠的方法可以从 bash 脚本中(以编程方式)确定它是在笔记本电脑还是台式计算机上执行的?
我显然可以提示用户询问他们,但这很笨拙。
我hexdump像这样转储一个字符串2031 3334 2e30 0a32 2032 3331 302e 000a。很明显,这0x0a是换行符,但是,当我尝试回显这个字符串时,我总是得到1 430.2 2 13.0- 新行被替换为空格,即使我使用了-e标志。
可能是什么问题?尾矿会\0破坏输出吗?有没有其他方法可以打印0x0a新行?
谢谢和最好的问候。
我需要使用 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 脚本或命令帮助我解决这个问题。谢谢 !
如果您熟悉 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 命令的解决方案