不切实际的不合理“错误替换”

笨拙的猫

问题

我的奇异容器中的一个软件包中的配置脚本之一包含(对我而言)完全合理的bash来修剪/路径尾部

if [ "${MY_DIR_PATH: -1}" = "/" ]; then
    MY_DIR_PATH="${MY_DIR_PATH%?}"
fi

它在我的机器上可以正常运行,但是当从%post奇异容器部分运行时,它会失败Bad substitution怎么了,正确的解决方法是什么?

最小的工作实例

保存以下文本,badSubs.def然后尝试;sudo singularity build badSubs.sif badSubs.def

BootStrap: docker
From: ubuntu:18.04

# what is done when the container is built
%post
    # make print colour #
    GREEN='\033[0;32m'
    NOCOLOUR='\033[0m'
    # start
    #echo "${GREEN}~~~ Give the user permission and control ~~~ ${NOCOLOUR}"
    #umask 000

    echo "${GREEN}~~~ this should work fine! ~~~ ${NOCOLOUR}"
    MYSCRIPT=$SINGULAITY_ROOTFS/confuzzel
    touch $MYSCRIPT
    chmod u+x $MYSCRIPT
    echo '#! /bin/bash' >> $MYSCRIPT
    echo 'PATHY="/what/a/path/"' >> $MYSCRIPT
    echo 'if [ "${PATHY: -1}" = "/" ]; then ' >> $MYSCRIPT
    echo '    echo yay!' >> $MYSCRIPT
    echo '    PATHY="${PATHY%?}"' >> $MYSCRIPT
    echo 'fi' >> $MYSCRIPT
    echo 'echo $PATHY' >> $MYSCRIPT
    cat $MYSCRIPT
    ./confuzzel

# metadata
%labels
    Author ClumsyCat
    Version v1.0

%help
    to build me
    > sudo singularity build badSubs.sif badSubs.def
    to run me do
    > singularity run badSubs.sif


戈登·戴维森

我不熟悉奇异性,所以这是一个猜测,但是我认为您的脚本是由bash以外的shell运行的(也许是破折号?)。${var: number}是变量扩展语法的非标准扩展;bash和其他一些shell支持它,其他(例如破折号)则不支持。

如果测试的唯一原因是找出变量是否以“ /”结尾,那么可以删除该变量,请不要打扰。这是POSIX标准的语法,如果变量以“ /”结尾,它将从变量的末尾删除“ /”:

MY_DIR_PATH=${MY_DIR_PATH%/}

如果确实需要测试,请改用以下方法:

if [ "${MY_DIR_PATH%/}" != "${MY_DIR_PATH}" ]; then

说明:这会将变量从头到尾与带有“ /” remove的变量进行比较。如果它们不同,则末尾必须有一个“ /”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有statsmodel ARIMA的不切实际的均方误差

WebClient 连续下载产生不切实际的下载速度

为什么类型推理对于面向对象的语言不切实际?

令人困惑的,看似不切实际的Linux磁盘分区方案

令人不切实际的“条件表达式中的无效数据类型”

在顶部显示不切实际的长处理时间

能够在不切实际的时间点设置时间的目的是什么?

彼得森的算法如何在不做出不切实际的假设的情况下工作?

为什么Python RK23解算器会爆炸并给出不切实际的结果?

是什么导致我的骰子游戏显示出不切实际的完美掷骰数

我正在编写嵌套的while循环,该循环越来越不切实际(> 12个嵌套循环),我该如何递归编码?

不合理的内存使用

iOS-预期字符不合理

不合理删除的移动构造函数

PHP的不合理的错误没有选择数据库,但我选择数据库

ORA-01460 请求未实现或不合理的转换

PostgreSQL数据库大小不合理

均方误差返回不合理的高数字

Ansi SQL查询给出不合理的结果

Jpeg到Bmp转换花费的时间不合理

模态窗口不合理地变得模糊

java不合理的jtextfield大小调整问题

WebStorm中不合理的“变量可能为空”警告

Python Pandas:如何删除值不合理的记录

使用 =NETWORKDAYS() 时出现不合理的大负数

在多线程Java中检测到不合理的DeadLock

Windows 7中的RAM使用不合理

运行kafka-topics命令时,“长度不合理”

FFMPEG提取不合理数量的I帧