summaryrefslogtreecommitdiffstats
path: root/test/bashisms/array-expansion.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:01:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:01:11 +0000
commit3be121a05dcd170854a8dac6437b29f297a6ff4e (patch)
tree05cf57183f5a23394eca11b00f97a74a5dfdf79d /test/bashisms/array-expansion.sh
parentInitial commit. (diff)
downloaddevscripts-3be121a05dcd170854a8dac6437b29f297a6ff4e.tar.xz
devscripts-3be121a05dcd170854a8dac6437b29f297a6ff4e.zip
Adding upstream version 2.23.4+deb12u1.upstream/2.23.4+deb12u1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/bashisms/array-expansion.sh')
-rw-r--r--test/bashisms/array-expansion.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/bashisms/array-expansion.sh b/test/bashisms/array-expansion.sh
new file mode 100644
index 0000000..ca2b57a
--- /dev/null
+++ b/test/bashisms/array-expansion.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# This is a TO DO, but irrelevant to this test case:
+foo=(foo bar moo BASH ISM)
+
+n=1
+
+echo BASHISM ${foo[1]%r}
+echo BASHISM ${foo[$n]%r}
+echo BASHISM ${foo[*]%o}
+echo BASHISM ${foo[@]%o}
+
+echo BASHISM ${foo[1]%%r}
+echo BASHISM ${foo[$n]%%r}
+echo BASHISM ${foo[*]%%o}
+echo BASHISM ${foo[@]%%o}
+
+echo BASHISM ${foo[1]#*a}
+echo BASHISM ${foo[$n]#*a}
+echo BASHISM ${foo[*]#*o}
+echo BASHISM ${foo[@]#*o}
+
+echo BASHISM ${foo[1]##*a}
+echo BASHISM ${foo[$n]##*a}
+echo BASHISM ${foo[*]##*o}
+echo BASHISM ${foo[@]##*o}
+
+echo BASHISM ${#foo[1]}
+echo BASHISM ${#foo[$n]}
+echo BASHISM ${#foo[*]}
+echo BASHISM ${#foo[@]}
+
+# Technically, there are two bashisms here, but I'm happy if it at
+# least matches one. The regexes become more complex without real gain
+# otherwise. (hence the "BASH ISMS", with the extra space)
+
+echo BASHISM BASH ISMS ${foo[1]^*a}
+echo BASHISM BASH ISMS ${foo[$n]^*a}
+echo BASHISM BASH ISMS ${foo[*]^*o}
+echo BASHISM BASH ISMS ${foo[@]^*o}
+
+echo BASHISM BASH ISMS ${foo[1]^^*a}
+echo BASHISM BASH ISMS ${foo[$n]^^*a}
+echo BASHISM BASH ISMS ${foo[*]^^*o}
+echo BASHISM BASH ISMS ${foo[@]^^*o}
+
+echo BASHISM BASH ISMS ${foo[1],*a}
+echo BASHISM BASH ISMS ${foo[$n],*a}
+echo BASHISM BASH ISMS ${foo[*],*a}
+echo BASHISM BASH ISMS ${foo[@],*a}
+
+echo BASHISM BASH ISMS ${foo[1],,*a}
+echo BASHISM BASH ISMS ${foo[$n],,*a}
+echo BASHISM BASH ISMS ${foo[*],,*a}
+echo BASHISM BASH ISMS ${foo[@],,*a}
+
+echo BASHISM BASH ISMS ${foo[1]/a/R}
+echo BASHISM BASH ISMS ${foo[$n]/a/R}
+echo BASHISM BASH ISMS ${foo[*]/a/R}
+echo BASHISM BASH ISMS ${foo[@]/a/R}