ох и запутанно вы объясняете, пол часа медитировал прежде чем примерно понять что вам нужно, хотя и то не уверен
как написать функцию в bash, чтобы она принимала один аргумент, а внутри можно было этот аргумент (строку) распарсить и вернуть из неё число
foo() {
foo_arg1="$1"
echo "$foo_arg1" | awk -F- '/^p-[[:digit:]]{1,}$/{printf $2}'
}
foo p-4 # вернет 4
сделал регуляркой с проверкой на число после p-
потом вызвать уже в блоке if при соответствующем условии myFunc $1
код в if
elif [[ $1 == 'p-"${2}"' ]]; then
...прочий конфиг --mark myFunc $2
во первых, 'p-"${2}"' это будет именно строка
p-"${2}" а не
p-чтототам, так как тут обрамлено в одинарные кавычки, правильнее было бы условие написать так:
[[ "$1" == "p-$2" ]]
то есть примерно будет такой скрипт:
#!/usr/bin/env bash
arg1="$1"
arg2="$2"
foo() {
foo_arg1="$1"
echo "$foo_arg1" | awk -F- '/^p-[[:digit:]]{1,}$/{printf $2}'
}
if [[ "$arg1" == "p-$arg2" ]]; then
echo --mark $(foo $arg1)
fi
exit
допустим назовем скрипт
0.sh, тогда
./0.sh p-4 4
--mark 4
./0.sh p-4 5 # ничего не выведет так как p-4 неравно p-5