小编sky*_*ert的帖子

for 循环中的条件继续中断函数中的 errexit

AFAICT,continue在 for 循环中调用另一个函数会破坏errexit语义。在main()函数中,如果build()函数中有任何失败,我想继续进行下一次迭代:

#! /usr/bin/env bash

export PS4='# ${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]}() - [${SHLVL},${BASH_SUBSHELL},$?] '
set -o xtrace
set -o errexit

build() {
  local _foo=$1

  if [ "${_foo}" -eq 1 ]; then
    false
  fi

  printf "%s with foo=%s builds ok\\n" "${FUNCNAME[0]}" "${_foo}"
}

main() {
  for i in 1 2 3; do
    build $i || continue
  done
}

main "$@"
Run Code Online (Sandbox Code Playgroud)

但是,continuefor循环内部会导致代码在函数内部继续build()运行,从而消除errexit标志的影响:

$ ./foo.sh 
# ./foo.sh:5: …
Run Code Online (Sandbox Code Playgroud)

bash shell-script

7
推荐指数
1
解决办法
206
查看次数

iwd with EAP-TLS fails with 'Failed to load <pem>'

I want to connect to an EAP-TLS access point using iwd, however this fails because it apparently cannot open my client key:

# iwctl
[iwd]# station wlan0 connect foo
Not configured
Run Code Online (Sandbox Code Playgroud)

iwd says:

src/network.c:network_connect() 
src/network.c:network_connect_8021x() 
Failed to load /var/lib/wireless/skybert.pem
Run Code Online (Sandbox Code Playgroud)

My kernel is the latest stable one and I've enabled CONFIG_PKCS8_PRIVATE_KEY_PARSER:

# uname -r
5.2.1
# lsmod | grep pkcs8_key_parser
pkcs8_key_parser       16384  0
Run Code Online (Sandbox Code Playgroud)

iwd

# /usr/libexec/iwd --version
0.18
# export IWD_TLS_DEBUG=1
# /usr/libexec/iwd -d
[..]
src/network.c:network_connect() 
src/network.c:network_connect_8021x() 
Failed to …
Run Code Online (Sandbox Code Playgroud)

wifi key-authentication iwd

5
推荐指数
1
解决办法
646
查看次数

标签 统计

bash ×1

iwd ×1

key-authentication ×1

shell-script ×1

wifi ×1