是否有一个标准的Bash工具,它像echo一样输出到stderr而不是stdout?
我知道我能做到,echo foo 1>&2
但它有点难看,而且我怀疑,容易出错(例如,当事情发生变化时更容易被编辑错误).
我有一个shell脚本,可以在Windows/Cygwin,Mac和Linux上使用.每个版本需要稍微不同的变量.
shell/bash脚本如何检测它是在Cygwin,Mac或Linux上运行?
我正在Linux中编写一个bash shell脚本,该程序将接受一个日期(mm-dd-yyyy)作为参数.我想知道是否有一种简单的方法来检查日期是否有效?是否有操作员,我可以使用测试来检查?
我在家里和工作中使用多种不同的操作系统,并且我希望能够有条件地加载特定于平台的 ZSH 设置,具体取决于我在给定时刻使用的操作系统。
我尝试了这个,但它没有加载我期望的所有内容:
# Condtitional loading of zsh settings per platform
if command apt > /dev/null; then
source $ZSH_CUSTOM/os/debian.zsh
elif command systemctl > /dev/null; then
source $ZSH_CUSTOM/os/systemd.zsh
elif command freebsd-version > /dev/null; then
source $ZSH_CUSTOM/os/freebsd.zsh
elif [[ `uname` == "Darwin" ]]; then
source $ZSH_CUSTOM/os/mac.zsh
elif command kubectl > /dev/null; then
source $ZSH_CUSTOM/os/kubernetes.zsh
else
echo 'Unknown OS!'
fi
Run Code Online (Sandbox Code Playgroud)
进行此检测的最佳方法是什么以及我做错了什么?我知道我的这种方法不起作用,因为当我运行时zsh -o SOURCE_TRACE
,它不会显示所有所需的文件来源。
提前致谢!
目前我正在使用新的Xubuntu trusty tahr建立一个新系统.我不太熟悉shell脚本,但我有一个需要OSTYPE环境变量才能确定要做什么.
如果我echo $OSTYPE
在xfce-terminal中呼叫,我就会成功linux-gnu
.
如果我调用以下脚本,我只会得到一个空行.
#!/bin/sh
echo $OSTYPE
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者它可能是新的ubuntu的问题?
在我的另一台机器上,它适用于该脚本.但我不知道是否有什么改变,因为系统本来不是我的.
嗨,我是bash脚本的新手.刚刚编写了这个简单的程序,但它正在抛出错误.
#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
echo "Linux"
else
echo "Windows"
fi
Run Code Online (Sandbox Code Playgroud)
使用==或-eq两种情况我得到以下错误,它正在打印else condn.
./ostype.sh:line 3:[GNU/Linux == GNU/Linux]:没有这样的文件或目录
视窗
Bash版本:GNU bash,版本3.2.48(1)-release(x86_64-suse-linux-gnu)
确定Jenkins管道正在运行的当前操作系统的方法是什么?
上下文:我正在构建一个共享的Jenkins管道脚本,该脚本应该在所有平台(windows,OSX,linux)上运行,并在每个平台上执行不同的操作.
我尝试过类似的东西:
import org.apache.commons.lang.SystemUtils
if (SystemUtils.IS_OS_WINDOWS){
bat("Command")
}
if (SystemUtils.IS_OS_MAC){
sh("Command")
}
if (SystemUtils.IS_OS_LINUX){
sh("Command")
}
Run Code Online (Sandbox Code Playgroud)
但即使它在Windows或Mac上运行node
它总是进入SystemUtils.IS_OS_LINUX
分支
我试过像这样的快速管道.
node('windows ') {
println ('## OS ' + System.properties['os.name'])
}
node('osx ') {
println ('## OS ' + System.properties['os.name'])
}
node('linux') {
println ('## OS ' + System.properties['os.name'])
}
Run Code Online (Sandbox Code Playgroud)
每个节点都在具有正确操作系统的机器中正确运行,但所有节点都打印出来 ## OS Linux
有任何想法吗?
谢谢联邦
我需要制作每个系统行为不同的脚本。今天,甚至可以在 microsoft windows、mac、linux、hp-ux、solaris 等系统上运行 bash...
如何确定我在这些操作系统中的哪一个?我不需要确切的版本,我只需要知道我是否在 windows、linux、solaris 上...
问题如标题所述。
总而言之,我试图让我的 bash 脚本和 Vim 在 VS Code 的集成终端中运行时表现出不同的行为。
我设法找到了其他几个堆栈溢出问题,但它们与操作系统的检测有关:
-如何检查是否在 Cygwin、Mac 或 Linux 中运行?
-如何从 Bash 脚本中检测操作系统?