标签: shell-script

修复或替代 OS X 中的 mktemp

我正在查看其他人编写的使用 bash 脚本mktemp

TEMP=`mktemp --directory`
Run Code Online (Sandbox Code Playgroud)

但是,这条线在我的机器上不起作用(OS X 10.6)。

我将如何修复这条线,使其与跨 un*x-like-platform 兼容?编辑:替代命令也足够了。

osx utilities shell-script

85
推荐指数
4
解决办法
3万
查看次数

如何判断一个包是否通过 yum 安装在 bash 脚本中?

我正在尝试编写一个安装包的脚本,但如果它在稍后的任何时候失败,脚本会回滚它安装的任何内容。当然,如果用户之前已经安装了一个包,我不想从他们下面卸载它。我的脚本如何判断一个包以前是否通过 yum 安装过?

bash yum shell-script package-management

84
推荐指数
3
解决办法
14万
查看次数

为什么下面的脚本会删除自己?

如果您创建一个包含以下内容的可执行文件并运行它,它会自行删除。
这是如何运作的?

#!/bin/rm
Run Code Online (Sandbox Code Playgroud)

executable shell-script rm files shebang

84
推荐指数
1
解决办法
1万
查看次数

如何在 shell 脚本中“导出”环境变量?

我有多个 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 脚本知识,但我不知道。我试图在没有运气的情况下寻找相关问题 - 如果这是重复的,我深表歉意。

shell bash shell-script environment-variables

80
推荐指数
2
解决办法
12万
查看次数

在列出当前目录中的文件时显示年份

我在 Red Hat 服务器上工作。命令ls -lll给我格式的日期和时间+"%b %-d %H:%M"

我想以每个文件创建的年份出现在日期内的方式列出文件。

这怎么可能?

linux shell-script date

80
推荐指数
4
解决办法
14万
查看次数

bash:测试是否设置了 $WORD

我正在寻找一个构造 in bash,以确定变量$WORD是否是定义的词之一。我需要这样的东西:

if "$WORD" in dog cat horse ; then 
    echo yes
else
    echo no
fi
Run Code Online (Sandbox Code Playgroud)

bash 有这样的结构吗?如果不是,最接近的会是什么?

bash shell-script

80
推荐指数
4
解决办法
13万
查看次数

ls -l 和 ll 的区别?

我对整个编程还比较陌生,一些教程告诉我用它ls -l来查看目录中的文件,而其他教程一直在说ll. 我知道这ls是一个简短的列表,但其他两个之间有区别吗?

ls shell shell-script

79
推荐指数
3
解决办法
24万
查看次数

在bash中,是否可以在大括号扩展中使用整数变量

我有以下 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循环以使其正常工作吗?谢谢你的时间。

shell bash shell-script for

78
推荐指数
3
解决办法
8万
查看次数

查找未使用的本地端口的最简单方法是什么?

查找未使用的本地端口的最简单方法是什么?

目前我正在使用类似的东西:

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)

感觉非常迂回,所以我想知道是否有更简单的路径,例如我错过的内置函数。

shell networking shell-script netstat

78
推荐指数
7
解决办法
9万
查看次数

Shell 语法:如何正确使用 \ 来换行?

我曾经相信打破列表中线条的适当方法是

command1 && \
command2
Run Code Online (Sandbox Code Playgroud)

原来不是这样,一个不需要 \

$ [  $(id -u) -eq 1000  ] &&                                                   
> echo yes
yes
Run Code Online (Sandbox Code Playgroud)

|以同样的方式处理管道。

关于流水线和列表的 bash 手册页部分没有对此进行任何说明。因此,我的问题是:\打破长行的正确用法是什么?

bash shell-script

78
推荐指数
2
解决办法
16万
查看次数