我有一个bash脚本,我在Debian 11上运行,它运行得很好,我必须将它移到Ubuntu (可能是22.04),现在它停止工作了。我的剧本如下:
BRANCHES=("master" "develop")
for BRANCH in "${BRANCHES[*]}"
do
echo Building $BRANCH
git checkout "$BRANCH"
#Code doing tasks
done
还尝试了“${分支}”,它给了我输出:
Building ("master" "
我有两个文本文件,希望删除文件A中包含B文件中的字符串的行
A档案:
joe ball 1335
john dyer 1365
dylan fisher 1795
ian gill 1913
eric kelly 1101
档案B:
1795
1913
我想让Bash代码得到这样的结果:
joe ball 1335
john dyer 1365
eric kelly 1101
我试过这个密码,但答案没有解决。
$ grep -vwF -f A B
$ awk -F'[ ,]
我一直在编写一个bash脚本,它应该循环遍历您应该拥有的用户列表和系统上的用户列表。我目前正在尝试将存储在变量中的用户名添加到数组(list)的末尾。下面是我的代码正在做的事情:
for x in array
do
for y in otherArray
do
if [[ $x == $y ]]
then
newArray += $x
elif [[ $x != $y ]]
then
otherNewArray += $x
fi
done
do
我使用下面的bash代码来将多行字符串读入数组中。我希望每个数组元素对应于字符串的一行。
mytext="line one
line two
line three"
IFS=$'\n' read -a lines <<<"${mytext}"
echo "len=${#lines[@]}"
for line in "${lines[@]}"
do
echo "[$line]"
done
我希望"len“应该等于3,”line“数组应该被正确初始化。然而,我得到了以下结
我在使用命令行可执行文件时有问题。我需要从bash将一个潜在的空字符串传递给程序,但是字符串存储在bash变量中。
C++程序的最小工作示例是:
// Compile with g++ main.cpp -o soexec
#include <iostream>
int main(int argc, char** argv) {
// shows what the program arguments are
for(size_t ind = 1 ; ind < argc; ++ind)
std::cout << " argv["
我很难通过一个for循环传递一个多行浮点数数组,让它运行一个计算,然后从输出中定义一个新变量。
下面是我的Bash的简化版本:
inputs=$(echo "12.12
34.34")
New_array=$( for var in "${inputs[@]}"; do
echo "${var}*2"| bc -l;
done )
我希望echo "$New_array"的结果是:
$ echo "$New_array"
24.24
68.68
但我明白
我正在尝试创建一个iptables规则,以便只接受一些mac地址。为此,首先,我向端点api发出get请求,以获取mac地址,并将mac地址存储在一个数组中。 示例: declare -a MAC_ADDRESS=()
MAC_ADDRESS+=($(curl -sb "Application: accept/json" "https://myurl/endpoint_api")) #(它不是真的正确,但我的get请求确实有效)。 然后,我创建了一个循环,将iptable规则应用于存储在数组中的所有项,如下所示: for element in $MAC_AD
我目前正在使用一个bash脚本,该脚本使用文本文件将变量传递给一些遗留代码。
脚本设置变量的值,一些遗留程序(lp)通过1)创建前缀为lp_和2的变量,然后将这些参数的值保存为lp_run_directory中的文本文件。下面是一个示例文件:
#!/bin/bash
#Set the parameters here
lp_parameter_a=(0.2 0.4 1)
lp_parameter_b="TRUE"
lp_parameter_c=0
#Set the working directory here (put pwd for generality)
lp_run_d
我不明白为什么当"${ARRAY[@]}"被引用("...")时,它被扩展为多个单词?
举个例子:
IFS=":" read -ra ARRAY <<< "foo:bar:baz"
for e in "${ARRAY[@]}"; do echo $e; done
foo
bar
baz
我在引号中展开的任何其他变量,比如"${VAR}",都会产生一个单词:
VAR="foo bar baz"
for a in "${VAR}"; do echo $a
我有一个bash列表,其中可以包含重复的值。我想要删除重复,并得到一个列表中只有唯一的值。秩序必须得到维护,唯一价值的最后一次出现是我希望保持的。
例如,如果我有以下列表:
A=( D B A C D )
我在找这个:
result=( B A C D )
当数据是文件中的列表时,我已经看到了解决方案,但是我更喜欢将列表保存在内存中,而不跳过任何循环。
我认为我可以使用关联数组并循环列表,将条目作为数组中的键添加,然后将键转储到唯一的列表中,但我不是跨平台关联数组的专家--它们是按照键值排序,还是类似于许多C++ STL容器那样,或者它们是否保持插入顺序而不管键值如何?
不过,我希望避免对关联
bash-3.2$ echo astr | sed 'hah' | sed 's/s/z/'
sed: 1: "hah": extra characters at the end of h command
bash-3.2$ echo ${PIPESTATUS[*]}
0 1 0
bash-3.2$ echo astr | sed 'hah' | sed 's/s/z/'
sed: 1: "hah": extra characters at the end of h command
bash-3.2
这段代码.
#!/usr/local/bin/bash
getDeclared() {
local v
v=$( set -o posix ; set )
IFS=$'\n' read -d '\034' -r -a v <<<"${v}\034"
echo "${v[*]}"
}
declare -a _hints=()
declare _hint="start.hint"
declare _paths
declare _basepa
我有一个日志文件,我试图注释掉与我的数组不匹配的行。我确实成功地学习了如何创建数组,并且我可以回显数组项,但是我很难获取与数组不匹配的内容,并在数组前面添加一些内容。这是我的代码,如果您对另一条路径或方法有建议,我可以让它变得更好:
for itsSaturday in $(find "$LOCATION" -mindepth 1 -maxdepth 1 -name "*.log" ); do
TEMPFILE="$itsSaturday.$$"
declare -a someArray=( "breakfast"
我的expect脚本成功地连接到几个远程服务器,并回显命令,但我无法设法让它从列表中回显一项。
例如,当向server1发送时,我希望输出到终端fruit:apple,但是apple保存在expect中,而send将其发送到未定义列表的本地终端。是否可以将expect变量发送到bash?
特别是守则中与此相关的行:
set counter 0
set types {apple orange}
set var $types($counter)
send -- "echo 'fruit:$var'\r"
set $counter [expr $counter+1]
我有一个变量的问题,内容是一个带有星号的路径。
示例:
./script/config/export/home/*
#!/bin/bash
#
dir=()
for i in $@; do
dir+="$i"
done
此变量来自启动脚本时的用户输入。但是,一旦我使用这个变量,bash就会将/home/*扩展到/home下的所有文件夹。
我想用test语句检查变量,如果有星号,那么运行一个命令。
for i in ${dir[*]}; do
if [[ "$i" == *"*"* ]]; then find $i -maxdepth 1 -t