aap*_*pap 1 bash command-line-interface
因此,假设我想在bash中运行一些命令,然后说八度。有什么办法可以用两个不同的命令运行相同的文件吗?在下面的示例中,我希望第一部分由bash运行,第二部分由八度运行
#!/bin/bash
echo helloooo
#!/bin/octave
plot(1,2)
pause()
Run Code Online (Sandbox Code Playgroud)
脚本的第一行只能有一个shebang。
不确定要在此处执行的操作,但是可以在运行时使用脚本名称来切换脚本解释器
例子 myscript.sh
#!/usr/bin/env bash
case "${0##*.}" in
# Switch script's interpreter based on script's name trailing .extension
sh)
echo helloooo
;;
plot | octave | oct)
octave < <(
# Remove the Bash part of this script
# by deleting lines up to what look like an octave shebang,
# and send it to octave
sed '1,/^#!.*[/[:space:]]\+octave$/d' "$0"
)
;;
esac
exit # Bash stuffs ends here
# Octave stuffs starts here with fake octave shebang
#!/usr/bin/env octave
plot(1,2)
pause()
Run Code Online (Sandbox Code Playgroud)
然后创建一个指向脚本的链接:
ln --symbolic --force myscript.sh myscript.oct
Run Code Online (Sandbox Code Playgroud)
作为Bash脚本运行它:
./myscript.sh
helloooo
Run Code Online (Sandbox Code Playgroud)
作为八度脚本运行:
./myscript.oct
...
Run Code Online (Sandbox Code Playgroud)