我正在阅读某人制作的 bash 脚本,我注意到作者没有使用 eval 来评估变量作为命令
作者使用
bash -c "$1"
Run Code Online (Sandbox Code Playgroud)
代替
eval "$1"
Run Code Online (Sandbox Code Playgroud)
我认为使用 eval 是首选方法,无论如何它可能更快。真的吗?
两者之间有什么实际区别吗?两者之间有哪些显着差异?
想使用 Shell 脚本获取 IP 地址。在不知道 eth0 或 eth1 或 eth2 的情况下如何获得特定的 IP 地址。
我对获取 localhost 地址不感兴趣,想获取私有 IP 地址。
我要买 iMac。我已经在 Linux 上工作了很长时间,我做了一堆 bash 脚本。我想知道 Mac OS 上是否可以使用所有 bash 命令和功能?任何人都对 Mac bash 脚本有任何经验?我感谢您的意见。
是否有针对 shell 脚本编写的 IDE,特别是 bash 和 zsh 脚本?这意味着对 shell 脚本进行语法高亮显示,更重要的是具有断点、变量检查和修改等功能的调试环境,就像 Python、Java 和 C 等常规编程语言可用的那样。
例如,Microsft Windows Powershell有像Powershell Plus和PowerGui这样的 IDE 。
谷歌搜索提出了ShellEd(一个用于编辑 shell 脚本的 Eclipse 插件)和 BashEclipse(一个与 ShellEd 一起工作的 Bash 调试器)的组合;我还没试过。
是否有任何其他类似于此组合的 Un*x 的 shell 脚本 IDE?有没有人对他们有一些经验?
我正在编写一个bash脚本,需要知道哪个桌面环境(XFCE、Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3...)正在运行。
我怎样才能获得这些信息?
我想删除每个文件,但保留文件夹结构。有办法吗?
注意:(我使用的是 GNU bash 4.1.5)。
我正在尝试在 bash 脚本中创建一个函数方法,该脚本执行由参数提供给该方法的命令。
意思是这样的:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Run Code Online (Sandbox Code Playgroud)
我已经尝试过我$@,"$@",$*,"$*"我怎么能这样做呢?
我有一个 bash 函数来设置$PATH这样的——
assign-path()
{
str=$1
# if the $PATH is empty, assign it directly.
if [ -z $PATH ]; then
PATH=$str;
# if the $PATH does not contain the substring, append it with ':'.
elif [[ $PATH != *$str* ]]; then
PATH=$PATH:$str;
fi
}
Run Code Online (Sandbox Code Playgroud)
但问题是,我必须为不同的变量编写不同的函数(例如,为$CLASSPATHlikeassign-classpath()等编写另一个函数)。我找不到将参数传递给 bash 函数的方法,以便我可以通过引用访问它。
如果我有类似的东西会更好 -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
Run Code Online (Sandbox Code Playgroud)
任何想法,如何在 bash …
我有一个程序,使用printf一些tput在它混合,我想管道输出到stdout和文件。我更喜欢使用,sed因为我不希望对我的脚本有任何不必要的依赖。这是我到目前为止所得到的。
printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log
唯一的问题是我的日志文件正在获取所有颜色输出...
^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m
我希望它只是有 | Sourcing files...