好的,我对bash脚本编写这些高级的东西有点陌生,我需要一点帮助。我甚至不知道如何准确地表达这一点,所以我只会解释我在做什么,以及我需要知道什么。在我的脚本中,我运行./configure,我需要能够捕获配置中是否存在错误,并在bash脚本中做出相应的反应。
代码是:
function dobuild {
echo -e "\e[1;35;40mExecuting Bootstrap and Configure\e[0m"
cd /devel/xbmc
if [ $Debug = "1" ];
then
#either outputs to screen or
我正在尝试迭代同一目录中的文件,其中只有一个4。
这是我到目前为止所拥有的。我当前脚本的问题是选择了任意数量的4的文件,而不是只有4的文件。
for i in *4*.cpp;
do
...
有点像[!4],但是对于任意数量的非4个字符。*
我想遍历文件名,比如me4.cpp、4.cpp和hi4hi.cpp
我想忽略诸如lala.cpp、44.cpp、4hi4.cpp之类的文件名
谢谢!
我想通了。我试过了!4*一时兴起。哦,原来我没有。这被解释为(!4)然后(*)
我正在制作一个简单的bash脚本。它接受两个选项(-d和-f)。我还希望允许此选项的详细版本(-directory和-file)。我尝试使用花括号通配符,但它不起作用。有什么建议吗?
谢谢!
#!/bin/bash
while test $# != 0
do
case $1 in
-f)
# do something
;;
{-d,-directory})
# do something
;;
*)
echo "error"
;;
esac
shift
done
我似乎无法让bash脚本中的regex工作:
#!/bin/bash
cd /var/lib/gitolite/repositories
for D in *; do
if [ -d "${D}" ]; then
if [["${D}" = [^[0-9A-Za-z\-_].git$] ]]; then
echo "${D}"
fi
fi
done
目录的可能名称:
test.git
test-admin12.git
test_admin.git
test_admin.git
我已经做了一段时间了,访问了几十个站点,尝试了各种组合;但是,我无法让脚本按预期运行。即使他们在https://regex101.com/工作,我仍然不能让他们在bash工作。
我正在尝试编写一个bash脚本,它将验证输入("$password")是否至少有八个字符长,并且至少包含一个数字和至少一个这些特殊字符:#?@$ %^&*-
GNU bash,版本5.1.16(1)-版本-(x86_64-pc-linux-gnu)
任何帮助都将不胜感激!
read -p "Please enter a password to test: " password
e
我试图在Bash脚本中计算一个布尔变量,但它总是返回false。
代码如下:
DEVICE_FOUND=false
tmp=`adb devices | tail -n+2 | awk '{print $1}'`
echo "$tmp" | while read line
do
if [ "$DEVICE_ID" = "$line" ]
then
echo "Found a device"
DEVICE_FOUND=true
fi
done
if ! $D
我有一个bash语句来测试命令行参数。如果传递给脚本的参数是“干净的”,则脚本将删除所有.o文件。否则,它将生成一个程序。但是,不管传递了什么(如果有的话),脚本仍然认为参数“干净”正在被传递。
#!/bin/bash
if test "`whoami`" != "root" ; then
echo "You must be logged in as root to build (for loopback mounting)"
echo "Enter 'su' or 'sudo bash'
我试图允许用户输入一个将在fallocate中使用的大小,所以我需要确保文本输入为1G、8G、512米等等。
下面有下面的代码;但是,所有正确的格式都是默认的*大小写。
echo -n "What amount do you want to allocate to the new swapfile? [i.e. 4G or 512M]\n"
read size
echo $size
case $size in
[1-9][0-9]*[m|M|g|G] )
echo "Size Verified: $size"
;;
我的桌面上有大量截图(这是保存它们的默认位置),它的标题是“屏幕快照2020-10-11 at 7.08.12 PM.png”,我想使用带有regex的bash脚本在“屏幕快照”位上将任何这样的文件从我的桌面移动到我创建的文件夹“屏幕快照”。
现在,我正在玩find . -regex Screen*.*?.png,但是它不太好用(它给了find: Screen Shot 2020-10-11 at 7.11.09 PM.png: unknown primary or operator)。
当输出找到所有正确的文件以将它们移动到文件夹时,我也不确定如何使用它。您能以某种方式使用for i in
我编写了一个bash脚本,它创建了一系列目录,并将项目克隆到选定的目录中。
为此,我需要对每个目录(project 1和project 2)进行cd,但是脚本既不对第二个目录进行D3,也不执行命令。
相反,它在cd之后停止,并在project2目录中克隆。为什么它不在下面的代码中调用cd_project1函数?
#!/bin/bash
#Get the current user name
function my_user_name() {
current_user=$USER
echo " Current user is $current_user"
}
我现在正在学习bash脚本,并在我的rbenv .shims文件夹中学习shims。我注意到它们都是完全相同的,它们都包含以下代码:
-e* | -- ) break ;;
问题-
这里的-e标志是什么,为什么它后面有一个星号?我知道方括号语句中的-e标志意味着if a file exists by the name of ____,但这里似乎并不是这样。
为什么-e*的输出被管道传输到--?--在这里做什么?
为什么有一个关闭帕伦没有开场帕伦?
shim文件的完整上下文如下:
#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEB
我有下一个代码,如果主机名与v-qai01或任何其他v-q*服务器匹配,我需要它来回显1:
if [ `hostname -s` -eq `v-q*` ]; then
echo "1"
fi
我有几个错误:
./run.sh: line 3: v-q*: command not found
./run.sh: line 3: [: v-qai01: unary operator expected
有什么建议吗?
如果我有下一个案子呢?
hostname=`hostname -s`
portalesWildcard=v-*ws*
qaiservers={'
我是在bash脚本中这样做的:
#!/bin/bash
set -e
function getVersion {
REGEX="^$2-(.*?)\.ear$"
if [[ "$1" =~ $REGEX ]]; then
echo "${BASH_REMATCH[1]}"
else
echo "Cannot deduce artifact version from file name $1, exiting" >&2
exit 1
fi
}
MY_APP=app-1.3.4
我想运行以下bash脚本,它存储在Elisp字符串中,而不是存储在.sh文件中,然后将shell输出存储在变量中。
#!/bin/bash
IFS=: read -ra _dirs_in_path <<< "$PATH"
for _dir in "${_dirs_in_path[@]}"; do
for _file in "${_dir}"/*; do
[[ -x ${_file} && -f ${_file} ]] && printf '%s\n'