我正在查看其他人编写的使用 bash 脚本mktemp:
TEMP=`mktemp --directory`
Run Code Online (Sandbox Code Playgroud)
但是,这条线在我的机器上不起作用(OS X 10.6)。
我将如何修复这条线,使其与跨 un*x-like-platform 兼容?编辑:替代命令也足够了。
我正在尝试编写一个安装包的脚本,但如果它在稍后的任何时候失败,脚本会回滚它安装的任何内容。当然,如果用户之前已经安装了一个包,我不想从他们下面卸载它。我的脚本如何判断一个包以前是否通过 yum 安装过?
我有多个 Amazon EC2 账户,并希望能够$EC2_HOME使用脚本快速切换变量,例如。
我有一个如下设置的shell脚本:
#!/bin/sh
export EC2_HOME=/home/me/.ec2
echo $EC2_HOME
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,我知道EC2_HOME已设置,但我认为使用export会使变量在脚本完成后继续存在。它没有,因为运行echo $EC_HOME不会显示任何内容。
我知道这一定是非常初级的 Linux 脚本知识,但我不知道。我试图在没有运气的情况下寻找相关问题 - 如果这是重复的,我深表歉意。
我在 Red Hat 服务器上工作。命令ls -l或ll给我格式的日期和时间+"%b %-d %H:%M"。
我想以每个文件创建的年份出现在日期内的方式列出文件。
这怎么可能?
我正在寻找一个构造 in bash,以确定变量$WORD是否是定义的词之一。我需要这样的东西:
if "$WORD" in dog cat horse ; then
echo yes
else
echo no
fi
Run Code Online (Sandbox Code Playgroud)
bash 有这样的结构吗?如果不是,最接近的会是什么?
我对整个编程还比较陌生,一些教程告诉我用它ls -l来查看目录中的文件,而其他教程一直在说ll. 我知道这ls是一个简短的列表,但其他两个之间有区别吗?
我有以下 bash 脚本:
#!/bin/bash
upperlim=10
for i in {0..10}
do
echo $i
done
for i in {0..$upperlim}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
第一for回路(没有变量upperlim中的循环控制)工作正常,但所述第二for环路(与可变upperlim的循环控制)没有。有什么办法可以修改第二个for循环以使其正常工作吗?谢谢你的时间。
查找未使用的本地端口的最简单方法是什么?
目前我正在使用类似的东西:
port=$RANDOM
quit=0
while [ "$quit" -ne 1 ]; do
netstat -a | grep $port >> /dev/null
if [ $? -gt 0 ]; then
quit=1
else
port=`expr $port + 1`
fi
done
Run Code Online (Sandbox Code Playgroud)
感觉非常迂回,所以我想知道是否有更简单的路径,例如我错过的内置函数。
我曾经相信打破列表中线条的适当方法是
command1 && \
command2
Run Code Online (Sandbox Code Playgroud)
原来不是这样,一个不需要 \
$ [ $(id -u) -eq 1000 ] &&
> echo yes
yes
Run Code Online (Sandbox Code Playgroud)
|以同样的方式处理管道。
关于流水线和列表的 bash 手册页部分没有对此进行任何说明。因此,我的问题是:\打破长行的正确用法是什么?